一、设计模式六大原则:
单一职责原则(Single Responsibility Principle)
不要存在多余一个让类发生变化的原因,也就是说一个类只负责一件事
里氏转换原则 (Liskov Substitution Principle)
任何使用父类的地方,都可以透明的使用其子类 继承:子类拥有父类的一切属性和行为,任何父类出现的地方都可以使用其子类来代替。 指导如何继承: 1、父类有的东西,子类不一定有,那么就断掉继承 2、子类可以有父类没有的东西,可以扩展父类 3、子类出现的地方,父类不一定能代替 4、子类隐藏父类的方法是违背里氏替换原则的,父类已经实现的东西,子类不要去修改 //父类有一个方法 public void SayHi() { } //子类隐藏了父类的方法 public new void SayHi() { } Base base = new Children(); base.SayHi(); //调用的是父类的SayHi,如果使用反射去调用,则调用的是子类的,因为反射调用的是运行时的 5、如果继承是为了减少重复代码,那么不要再修改 6、如果继承是为了多态,那么需要是override的 virtual/abstract
依赖倒置原则 (Dependence Inversion Principle)
上层模块不应该依赖于低层模块,二者应该基于抽象依赖。 面向抽象编程,可以传递不同的子类,将来也可以进行扩展 低层模块都应该有抽象,而不仅仅是细节 变量的声明尽量是面向抽象的,或者是基类 抽象的是共同的东西,而不是什么都抽象
接口隔离原则 (Interface Segregation Principle)
客户端不应该依赖于它不需要的接口 特殊的功能还是再封装一个接口,不要放在共同拥有的功能接口中 划分接口: 首先不能全部放在一个接口中,大而全,违背了原则 也不能太细太碎,应该按照一定的规则进行分组
迪米特法则 (Law Of Demeter)
最少知道原则,一个对象应该对其他对象保持最少的了解,不要和非直接的关系接触,高内聚,低耦合 类与类之间的关系: 纵向关系 继承约等于接口 横向关系 聚合>组合>关联>依赖
开闭原则 ( Open Closed Principle)
对扩展开放,对修改关闭 支持功能扩展,增加类型,但是不修改类
可以说是六大设计模式的总则,其他5个是具体的手段