你如何为接口的“参考”实现命名?

3
我的问题非常简单,标题已经表述得很清楚了:您如何为接口的“参考”或“基本”实现命名?我看到了一些命名约定:
  • FooBarImpl
  • DefaultFooBar
  • BasicFooBar
您使用哪种方法?有什么优缺点?这些“参考”实现放在哪里?目前,我创建了一个.impl包来存放实现。更复杂的实现可能包含多个类,放在.impl.complex包中,“complex”是描述实现的简短名称。
谢谢, Malax
5个回答

2

我想知道你的问题是否反映了特定语言的习惯。 我用C#编写代码,通常没有“默认”实现。 我有一个接口,比如IDistance,每个实现都有一个名称来描述它的实际目的/特定方式,例如EuclidianDistance、ManhattanDistance... 在我看来,“默认”不是实现本身的属性,而是它的上下文:应用程序可以有一个名为“GetDefaultDistance”的服务/方法,该方法将配置为返回其中一个距离实现。


1
在Java中,("适用时")我通常使用一个称为RefImpl的嵌套类。这样,对于给定的接口InterfaceXYZ,参考实现始终是InterfaceXYZ.RefImpl,而不需要摸索制作有效冗余名称。
public interface InterfaceXYZ {

   // interface methods ...

   public static class RefImpl implements InterfaceXYZ {
        // interface method impls.
   }
}

然后有一个统一的使用模式:

// some where else
public void foo () {

    InterfaceXYZ  anXYZ = new InterfaceXYZ.RefImpl();

    ...
}

0

我之前提出了一个问题,关于“null”实现,它被识别为空对象模式 - 一种不执行任何有意义操作的接口实现。像Mathias一样,我也不太确定什么样的“默认”实现不需要与其实现相关的名称。


0
如果接口是RazmaFrazzer,我会称其实现为DefaultRazmaFrazzer。
如果您已经有了几个实现,并将其中一个标记为“默认”,请查看所有实现并查看它们之间的差异,并想出一个形容词来描述默认实现的区别特征,例如SimpleRazmaFrazzer,或者如果它是转换器,则可能有PassThroughDefaultRazmaFrazzer-因此您正在寻找使实现独特的任何内容。

0

确切的约定并不重要 - 可以是 IService + Service 或者 Service + ServiceImpl。关键是在整个项目中保持一致。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接