单一职责原则
summary
功能就是功能
属性就是属性
里氏替换原则
summary
一个函数中,父类能够出现的地方,其子类也可以出现,且该函数所表达的功能不变。
依赖倒置原则
1 、模块间的依赖通过抽象发生,实现类之间不能发生直接的依赖关系,其依赖关系通过接口或者抽象类产生。
- 那继承跟这个又有什么关系
2、实现类依赖接口或者抽象类
3、接口或者抽象类不依赖实现类
summary
抽象:接口,抽象类
细节:实现类
面向接口编程-————面向对象设计的精髓之一
接口隔离原则
1、根据业务需求,让一个接口只服务于一个子模块或者业务逻辑。
2、理解不够透彻
summary
迪米特法则(最少知识原则)
1、一个对象应该对其他对象有最少的了解。(高内聚,低耦合)
2、场景案例
老师叫体育委员清点队伍人数。
老师只需要跟体育委员接触,体育委员需要跟队伍和老师接触。而队伍只需要跟体育委员接触。
summary
原则:如果一个方法放在本类中,既不增加类间关系,也不对类产生负面影响,那就放在本类吧。
开闭原则
1、定义:一个软件实体,如类、模块或者函数应该对扩展开放,对修改关闭。
- 软件实体:软件、产品中按照一定逻辑划分出来的模块;抽象和类;方法;
2、场景案例
书店、书(书名,价格,作者)。
需求变更,书店对书本的价格进行打折。
思考:如何修改价格
1、直接修改这个价格==》原价格不见了,原来的逻辑也无法变通。
2、修改接口,因为定义的对象是一个接口 IBook,所以依然无法实现对之前逻辑的支持。
3、采用扩展。即继承原理的book类,通过重写获得价格的方法获得打折后的价格。(有个坑,如果这个时候,我需要显示原价格和当前价格,以便于比较。这个时候也可以采用扩展,同时新增方法,但是就无法支撑IBook这个接口了。)
3、如何使用开闭原则
1、抽象约束
采用抽象或者接口类实现约束一组可能变化的行为,并且能够实现对扩展的开放。??
2、元数据控制模块行为
减轻开发痛苦,那么尽量使用元数据来控制程序行为,减少重复开发。
- 元数据:
用来默哀回溯环境和数据的数据,通俗地说就是配置参数。??
3、制定项目章程
团队中,建立项目章程是非常重要的,因为章程中指定所有人必须遵守的约定,对项目来说,约定优于配置。
4、封装变化
第一,将相同的变化封装到一个接口或者抽象中。
第二,将不同的变化封装到不同的接口或者抽象类中,不应该有两个不同的变化出现在同一个接口或者抽象类中。??