尽量使用合成/聚合的方式,而不是使用继承。只有当以下的条件全部被满足时,才应当使用继承关系,
1、子类是超类的一个特殊种类,而不是超类的一个角色,也就是区分“Has-A”和“Is-A”。只有“Is-A”关系才符合继承关系,“Has-A”关系应当使用聚合来描述。
2、永远不会出现需要将子类换成另外一个类的子类的情况。如果不能肯定将来是否会变成另外一个子类的话,就不要使用继承。
3、子类具有扩展超类的责任,而不是具有置换掉或注销掉超类的责任。如果一个子类需要大量大置换掉超类的行为,那么这个类就不应该是这个超类的子类。
错误地使用继承而不是合成/聚合的一个常见原因是错误地把“Has-A”当成了“Is-A”。“Is-A”代表一个类是另外一个类的一种,而“Has-A”代表一个类是另外一个类的角色,而不是另外一个类的特殊种类。
标签:聚合,原则,继承,子类,合成,复用,一个,超类,使用 From: https://blog.51cto.com/u_11315052/6654844