封装变化
(找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起)
(把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分)
(系统中的某部分改变不会影响其他部分)
针对接口编程,不针对实现编程
多用组合,少用继承
(使用组合建立的系统,具有很大的弹性,不仅可将算法簇封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可。)
为了交互对象之间的松耦合设计而努力
(松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的相互依赖降到了最低。)
类应该对扩展开放,对修改关闭(开放-关闭原则)
要依赖抽象,不要依赖具体的类