【设计模式之禅】6大原则

  • 单一职责原则(SRP:single Responsibility Principle)

    应该有且只有一个原因引起类的变更(实际项目中很难做到)

    优点:

【设计模式之禅】6大原则

 

 

  • 里氏替换原则(LSP: liskov Substitution Principle)

        1.子类必须实现父类的方法

                如果子类不能完整地实现父类的方法, 或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。

        2.子类可以拥有自己的个性(自己的方法和属性)

                父类出现的地方,子类就可以出现。
                有子类出现的地方,父类未必可以出现。

        3.  覆盖或实现父类的方法时,输入的参数可以被放大

                输入参数的类型要宽于父类的类型覆盖范围:例如父类用HashMap, 子类用Map

                如果父类的类型更宽泛,会导致子类在没有覆写父类方法的前提下,子类方法被执行。

                【设计模式之禅】6大原则

 

                【设计模式之禅】6大原则

 

                【设计模式之禅】6大原则

        4.覆写或实现父类的方法时输出结果可以被缩小

        里氏替换原则优点:

【设计模式之禅】6大原则

 

  • 依赖倒置原则(DIP, Dependence Inversion  Principle)

                1.高层模块不应该依赖底层模块,两者都应该依赖其抽象(接口或是抽象类)

                2.抽象不应该依赖细节( 实现类,实现接口或继承抽象类而产生的类)

                3.细节应该依赖抽象

                4.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的 

                5.接口或抽象类不依赖于实现类

                6.实现类依赖接口或抽象类

               

    依赖倒置原则优点:

    采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

    依赖的三种写法
                1.构造函数传递依赖对象

                2.Setter方法传递依赖对象

                3.接口声明依赖对象

     项目中应用方式

                【设计模式之禅】6大原则

               【设计模式之禅】6大原则

               【设计模式之禅】6大原则

               【设计模式之禅】6大原则

               【设计模式之禅】6大原则

               依赖倒置原则的核心:面向接口编程

               

  • 接口隔离原则

  • 迪米特法则

  • 开闭原则