使用Java接口表示名词和形容词是否正确?

sda*_*das 5 java encapsulation interface

我遇到了解Java接口语义的问题.我在用代码填充之前用接口问题建模.我这样做是通过找出问题中的名词并为它们创建一个界面,例如:

每个房子里面至少有一个人.每个房子也可能只包含一辆自行车,可能至少包含一辆汽车.

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

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

每个房子,自行车和汽车都可能有一定的颜色.

我创建了以下界面,而不是在每个车辆和房屋类中创建以下方法:

public interface IPainted {

    public Paint getPaint();

    public void setPaint();

}
Run Code Online (Sandbox Code Playgroud)

并将其应用于车辆和房屋界面:

public interface IVehicle extends IPainted {
}
Run Code Online (Sandbox Code Playgroud)

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

amp*_*ent 2

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

  • 谢谢 - 命名约定适用于可绘制、可选择、可识别等事物,但是如果每个车辆都包含其零件列表会发生什么?它不能命名为 IPartable...这就是我发现 IWindow 中 *able 命名约定的地方。 (2认同)