【发布时间】:2013-01-14 20:55:48
【问题描述】:
我在理解 Java 接口的语义时遇到了问题。在用代码填充接口之前,我正在对接口问题进行建模。我通过找出问题中的名词并为它们创建一个接口来做到这一点,例如:
每个房子里至少有一个人。每所房子也可能正好有一辆自行车,并且可能至少有一辆汽车。
因此,我将创建 IHouse、IPerson 和 IVehicle 接口(因为未来我们可能会有不同类型的房屋、人员和车辆)。
当我进入这些名词的形容词时,问题就来了,例如:
每个房子、自行车和汽车都可能有某种颜色。
我没有在每个车辆和房屋类中创建以下方法,而是创建了以下接口:
public interface IPainted {
public Paint getPaint();
public void setPaint();
}
并将其应用于车辆和房屋接口:
public interface IVehicle extends IPainted {
}
这是表示形容词的最佳方式吗?
【问题讨论】:
-
“最佳”是主观的......但这是一个好方法。
-
我认为是对的,但是 setPaint 方法可能会因为 Paint 参数而无效
-
补充一点,在学习接口和抽象类时,您可能会发现Decorator pattern 很有趣。
-
在接口名称前面使用
Istackoverflow.com/questions/2814805/…
标签: java interface encapsulation