多用组合少用继承
tips:在包内部使用继承是非常安全的,子类和超类的实现都处于同一个程序员的控制。
tips:对于专门为了继承而设计,并且具有很好文档说明的类来说,使用继承也是非常安全的。
tips:适用于类扩展,不适用于接口扩展
只有当子类真正是个超类的子类型时,才适合用继承。
- 两个类A和B,当且仅当B is-a A时,B才应该扩展A
- 两个类A和B,如果B has-a A 时,B可以把A组合到自己的类里面
tips:可以参考设计模式->策略模式
优先使用组合的优点:
1.不会暴露不必要的实现细节 2.继承会把超类中的所有缺陷传播到子类中,而组合可以通过设计将这些缺陷隐藏
总结:如果一个类B只是包含了另外一个类A的某些特性时,那么使用策略模式封装类A的方法,同时可以扩展自己的方法。
