【问题标题】:Is it correct to use Java interfaces to represent nouns AND adjectives?使用Java接口表示名词和形容词是否正确?
【发布时间】:2013-01-14 20:55:48
【问题描述】:

我在理解 Java 接口的语义时遇到了问题。在用代码填充接口之前,我正在对接口问题进行建模。我通过找出问题中的名词并为它们创建一个接口来做到这一点,例如:

每个房子里至少有一个人。每所房子也可能正好有一辆自行车,并且可能至少有一辆汽车。

因此,我将创建 IHouse、IPerson 和 IVehicle 接口(因为未来我们可能会有不同类型的房屋、人员和车辆)。

当我进入这些名词的形容词时,问题就来了,例如:

每个房子、自行车和汽车都可能有某种颜色。

我没有在每个车辆和房屋类中创建以下方法,而是创建了以下接口:

public interface IPainted {

    public Paint getPaint();

    public void setPaint();

}

并将其应用于车辆和房屋接口:

public interface IVehicle extends IPainted {
}

这是表示形容词的最佳方式吗?

【问题讨论】:

标签: java interface encapsulation


【解决方案1】:

是的。并且要将“名词”和“形容词”这两个有点尴尬的名称放在同一个桶中,请使用后缀“able”——在本例中为public interface Paintable。因此,可绘制类的所有与可绘制性相关的属性都应该封装在该类实现的Paintable 接口中。

【讨论】:

  • 谢谢 - 命名约定适用于诸如 Paintable、Selectable、Identifiable 等内容,但如果每辆载具都包含其部件列表会怎样?它不能被命名为 IPartable...我发现 *able 命名约定超出了 IWindow。
  • Vehicle 也应该是一个抽象结构,所以要么是接口,要么是(更合适的)抽象类。然后,我会将与部件相关的方法放在Vehicle 中,如果它是抽象类,则扩展Vehicle,或者如果它是接口,则同时实现PaintableVehicle
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2012-11-11
  • 2015-11-26
  • 1970-01-01
相关资源
最近更新 更多