如果您使用的是基于接口的设计方法,那么如何命名更多的行为接口呢?

时间:2010-07-05 07:08:11

标签: java oop interface naming-conventions

我正在开发一个包含多个控件(或组件)的库。我正在使用基于界面的方法进行类型设计,但最终它让我陷入困扰我很久的问题。如果您使用基于接口的设计方法,您如何命名行为接口?例如,假设你有一些getter setter函数,它们被许多接口使用,它们提供的功能不能用“-able”后缀命名;你会做什么,或者你做什么?感谢...

编辑:例如,我创建了一个这样的界面:

public interface HasText {

    public String getText();

    public void setText(String text);

}

使用此功能的大多数接口都没有常见的超类型。

2 个答案:

答案 0 :(得分:1)

确定您需要不同的行为界面?实现一个行为界面和几个具体行为是不够的?

举一个例子,假设我们有一个真正的野生动物的实现,比如一个带有一些传感器和一大堆行为的类Cat。现在猫的眼睛传感器报告“鼠标!!”。如果任何存储的Cat实例喜欢采取行动,那么Collection将查询Behaviour Behaviour个实例class HuntMouse implements Behaviour实例。假设我们在列表中存储了action()的实例,这是最合适的,然后猫会在Behaviour上调用Behaviour并捕获鼠标。

回到你的问题 - 我认为,一个Behaviour接口有2-3个方法就足够了,具体的-Behaviour个对象不需要前缀或后缀。如果需要,我建议HuntMouseBehaviour(例如HasText


最初您要求行为,但您的TextProvider示例显示了某种功能。在这种特殊情况下,hasText可能是更好的选择,而provide some text更适合。{1}}。实现界面会将{{1}}功能添加到类中。


不是问题的答案,而是进一步阅读:List of behavioural design patterns

(顺便说一下 - 上面我的例子的灵感来自机器人领域的实际实现 - 即使猫不是机器人;)

答案 1 :(得分:1)

将接口命名为正确描述实现它的任何类的单词或短语。 “HasText”是一个很好的例子,因为它描述了实现者(它有一个Text属性)。

使其特定于界面。 “IsAnObject”或“MightHaveData”或“ExistsInCyber​​space”不是特定于接口。