摘自《Java Design》
对于超类A和子类B,必需满足:
命题“B是一个由A扮演的角色”不成立。
B永远不需要转型成为其他某些类别中的对象。
B扩展而不是覆盖或废弃A的行为(即Liskov原则)。
A不仅仅是一个工具类(一些可以重用的实用功能)。
对于一个问题域(特定的业务对象环境):A和B定义了同一类型的对象,或者是用户事务、角色、实体(团体、位置或其他东西),或其他物体的相似类别。
否则,改用关联关系可能更加稳固、正确。
对于超类A和子类B,必需满足:
命题“B是一个由A扮演的角色”不成立。
B永远不需要转型成为其他某些类别中的对象。
B扩展而不是覆盖或废弃A的行为(即Liskov原则)。
A不仅仅是一个工具类(一些可以重用的实用功能)。
对于一个问题域(特定的业务对象环境):A和B定义了同一类型的对象,或者是用户事务、角色、实体(团体、位置或其他东西),或其他物体的相似类别。
否则,改用关联关系可能更加稳固、正确。