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

时间:2009-11-28 20:10:09

标签: oop interface

我的问题很简单,标题很完美:你如何命名界面的“参考”或“基本”实现?我看到了一些命名约定:

  • FooBarImpl
  • DefaultFooBar
  • BasicFooBar

你用什么?优缺点都有什么?你在哪里放置那些“参考”实现?目前我创建了一个实现的.impl包。可能包含多个类的更复杂的实现进入.impl.complex包,其中“complex”是描述实现的简短名称。

谢谢你, 马拉克斯

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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();

    ...
}

答案 2 :(得分:0)

I asked a previous question关于“null”实现,它被识别为空对象模式 - 一个没有任何意义的接口的实现。和Mathias一样,我不太确定什么是“默认”实现,它没有特定于其实现的某种名称。

答案 3 :(得分:0)

如果界面是RazmaFrazzer,我会将实现称为DefaultRazmaFrazzer。

如果您已经有多个实现,并且已经将其中一个标记为“默认”,请查看所有实现,查看它们之间的差异,并提出描述区分的形容词功能的默认实现,例如SimpleRazmaFrazzer,或者如果它是一个转换器,你可能有PassThroughDefaultRazmaFrazzer - 所以你正在寻找任何使实现与众不同的东西。

答案 4 :(得分:0)

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