代码之家  ›  专栏  ›  技术社区  ›  Malax

如何命名接口的“引用”实现?

  •  2
  • Malax  · 技术社区  · 16 年前

    我的问题相当简单,标题完美地说明了这一点:如何命名接口的“引用”或“基本”实现?我看到了一些命名约定:

    • 硼砂
    • 默认foobar
    • 基足

    你用什么?利弊是什么?您将这些“引用”实现放在哪里?目前我创建了一个.impl包来实现。可能包含多个类的更复杂的实现进入.impl.complex包,其中“complex”是描述实现的简短名称。

    谢谢您, 马拉克斯

    5 回复  |  直到 16 年前
        1
  •  2
  •   Mathias    16 年前

    我想知道你的问题是否反映了某种语言的风俗习惯。我用C编写,通常没有“默认”实现。我有一个接口,比如说IDistance,每个实现都有一个名称来描述它的实际用途/它是如何具体化的,比如说,欧几里得距离,manhattandistance…在我看来,“默认”不是实现本身的属性,而是其上下文的属性:应用程序可以有一个名为“GetDefaultDistance”的服务/方法,该服务/方法将配置为返回其中一个距离实现。

        2
  •  1
  •   alphazero    16 年前

    在爪哇, 只要合适 )我通常使用一个名为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();
    
        ...
    }
    
        3
  •  0
  •   Community Mohan Dere    9 年前

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

        4
  •  0
  •   Dafydd Rees    16 年前

    如果接口是razmafrazzer,我会将实现称为defaultrazmafrazzer。

    如果您已经有了几个实现,并且将其中一个标记为“默认”,请查看所有的实现和 看看它们之间的区别,想出一个形容词来描述它们的区别特征。 对于默认的实现,例如simperrazmafrazzer,或者如果它是一个转换器,那么您可能有passthroughdefaultrazmafrazzer——所以您要寻找使实现与众不同的任何东西。

        5
  •  0
  •   Bozho    16 年前

    确切的惯例是行不通的。 IService + Service 服务 + ServiceImpl . 重点是 在整个项目中保持一致 .