1.接口
作用:实现可插入性
包括:
关联的可插入性
调用的可插入性
2.抽象类
作用:对具体的抽象,提高复用及解耦
注意:代码向上层移动(即共同代码尽量写在抽象类里),以提高复用
数据向下层移动(即数据存储尽量写在子类里),以减少占用资源
3. 里氏替换原则:如果类型T1有对象O1,类型T2有对象O2,在程序P所有涉及到01的对象换成02
时,程序P的行为没有变化,则T2为T1的子类型
即,一个软件实体,如果实使用基类的话,那也一定适用于子类,程序并不能
察觉出两者的区别
里氏替换原则在设计模式中的体现:
(1)策略模式-如果有一组算法,那么就将每一个算法封装起来,让他们可以互换
策略模式
4.依赖传转原则:要针对于接口编程,不要针对于实现编程-应当使用接口及抽象类进行变量的声明、参量的类型声明、方法的返回类型声明
传统的面向过程语言编写系统的设计,倾向于抽象模块依赖于具体模块,这样在具体业务实现逻辑改变时, 商业逻辑不可避免的需要更改
抽象模块依赖于具体模块
而依赖倒转之后,具体模块依赖抽象模块,高层业务实现逻辑,不必依赖于具体业务实现逻辑
依赖倒转