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)
这是表示形容词的最佳方式吗?
是的。要将“名词”和“形容词”这两个有点尴尬的名称放在同一个桶中,请使用后缀“able” - 在本例中为public interface Paintable。因此,可绘制类的所有与可绘制性有关的属性都应该封装在Paintable该类实现的接口中。