设计模式
六大设计原则
单一职责原则
Single Responsibility Principle
定义:应该有且仅有一个原因引起类的变更。
单一职责适用于接口、类,同时也适用于方法。
优势:
类的复杂性降低,实现什么职责都有清晰明确的定义;
可读性提高;
可维护性提高;
变更引起的风险性降低。
里氏替换原则
Liskov Substitution Principle
所有引用基类的地方必须能透明的使用其子类的对象。
4层含义:
1,子类必须完全实现父类的方法;
2,子类可以有自己的个性;
3,覆盖或实现父类的方法时输入参数可以被放大;
4,覆盖或实现父类的方法时输出结果可以被缩小。
优势:
代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;
提高代码的重用性;
子类可以形似父类,但又异于父类;
提高代码的可扩展性;
提高产品或项目的开放性。
缺点:
继承时侵入性的,只要继承,就必须拥有父类的所有属性和方法;
降低代码的灵活性;
增强了耦合性。
依赖倒置原则
Dependence Inversion Principle
依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。
三层含义
1,高层模块不应该依赖低层模块,两者都应该依赖其抽象;
2,抽象不应该依赖细节;
3,细节应该依赖抽象。
三种写法
1,构造函数传递依赖对象;
2,Setter方法传递依赖对象;
3,接口声明依赖对象。
本质是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合。我们需要遵循的几个规则:
1,每个类尽量都有接口或抽象类,或者两者都有;
2,变量的表面类型尽量。是接口或者是抽象类;
3,任何类都不应该从具体类派生;
4,尽量不要覆盖基类的方法;
5,结合里氏替换原则使用
接口隔离原则
Interface Segregation Principle
四层含义
1,接口要尽量小;
2,接口要高内聚;
3,定制服务;
4,接口设计是有限度的。
迪米特法则
Law of Demeter
也称为最少知识原则
一个对象应该对其他对象有最少的了解。
四层含义
1,只和朋友交流;
2,朋友间也是有距离的;
3,是自己的就是自己的;
4,谨慎使用Serializable。
开闭原则
Open Closed Principle
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。