【设计模式之禅】6大原则
-
单一职责原则(SRP:single Responsibility Principle)
应该有且只有一个原因引起类的变更(实际项目中很难做到)
优点:
-
里氏替换原则(LSP: liskov Substitution Principle)
1.子类必须实现父类的方法
如果子类不能完整地实现父类的方法, 或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。
2.子类可以拥有自己的个性(自己的方法和属性)
父类出现的地方,子类就可以出现。
有子类出现的地方,父类未必可以出现。
3. 覆盖或实现父类的方法时,输入的参数可以被放大
输入参数的类型要宽于父类的类型覆盖范围:例如父类用HashMap, 子类用Map
如果父类的类型更宽泛,会导致子类在没有覆写父类方法的前提下,子类方法被执行。
4.覆写或实现父类的方法时输出结果可以被缩小
里氏替换原则优点:
-
依赖倒置原则(DIP, Dependence Inversion Principle)
1.高层模块不应该依赖底层模块,两者都应该依赖其抽象(接口或是抽象类)
2.抽象不应该依赖细节( 实现类,实现接口或继承抽象类而产生的类)
3.细节应该依赖抽象
4.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的
5.接口或抽象类不依赖于实现类
6.实现类依赖接口或抽象类
依赖倒置原则优点:
采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。
依赖的三种写法
1.构造函数传递依赖对象
2.Setter方法传递依赖对象
3.接口声明依赖对象
项目中应用方式
依赖倒置原则的核心:面向接口编程
-
接口隔离原则
-
迪米特法则
-
开闭原则