- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 多用组合少用继承:使用组合建立系统具有很大的弹性,不仅可将算法族封装成类,更可以在“运行时动态改变行为”,只要组合的行为对象更符合正确的接口标准即可。
- 为了交互对象之间的松耦合设计而努力。
- 类应该对扩展开放,对修改关闭。
- 要依赖抽象,不要依赖具体类。不能让高层组件依赖低层组件,而且,不管高层或低层组件,“两者”都应该依赖于抽象。 高层组件:由其他低层组件定义其行为的类。
- 依赖倒置原则方针
2-不要让类派生自具体类。如果派生自具体类,你就会依赖具体类,请派生自一个抽象(接口或抽象)。
3-不要覆盖基类中已实现的方法。
- 遵循开放-关闭原则,通常会引入新的抽象层次,增加代码中的复杂度。你需要把注意力集中在涉及中最有可能改变的地方,然后应用开放-关闭原则。
- 在设计模式中,所谓“实现一个接口”并“不一定”表示“写一个类,并利用implement关键词来实现某个java接口”。“实现一个接口”泛指“实现某个超类型(可以是类或接口)的某个方法”。
- “针对接口编程”真正的意思是“针对超类型编程”。这里的“接口”有多个含义,接口是一个“概念”,也是一种Java的interface构造。你可以在不涉及Java interface的情况下,“针对接口编程”,关键就在多态,程序可以针对超类型编程,执行时会根据实际状况执行真正的行为,不会被绑死在超类型的行为上。“针对超类型编程”这句话,可以更明确地说成-变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类所产生的对象,都是指定给这个变量。意味着,声明类时不用理会以后执行时的真正对象类型。