原则是尽量使用合成/聚合的方式,而不是使用继承
1 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
2 针对接口编程,而不是针对实现编程
3 为了交互对象之间的松耦合设计而努力