天天看点

设计模式--原则

1.单一职责原则

           简单总结:就一个类而言,应该只有一个引起它变化的原因,一个类中承担的职责不宜多

                        如果 承担的职责越多,可复用性越差 

                           承担的职责越多,各职责间耦合性越强,修改一个职责,都有影响到其它职的风险        

               是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则    

              2.开闭原则

           简单总结:一个软件实体应该对扩展开放,对修改关闭。在不修改原有代码的情况下进行扩展

                  把系统定义成一个相对稳定的抽象层,将不同行为移至具体的实现层中完成。

                 使软件具有较好的稳定性和可延续性。

           抽象化是开闭原则的关键

           3.里氏替换原则

         简单总结:所有引用基类的地方必须能透明地使用其子类的对象

                     在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立

                  在程序中经量使用基类对对象进行定义,而在运行时再确定其子类型,用子类对象来替换父类对象

           里氏代换原则是开闭原则的具体实现手段之一

        4.依赖倒置原则

         简单总结:抽象不应该依赖于细节,细节应当依赖于抽象。要对接口编程,而不是针对实现编程。

                    使用接口和抽象类进行变量类型声明,参数类型声明,方法返回类型声明,以及数据类型的转换。而不用具体类来做这些事情。

                    针对抽象层编程,将具体类对象通过依赖注入的方式注入其它对象中(构造注入,设置注入(set方法),接口注入)

         开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段

       5.接口隔离原则

        简单总结:使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖于它不需要的接口

                     每个接口是一个独立的较少,不干不该干的事,该干的都得干

                     给客户端提供尽可能小的 接口,而不要提供大的总接口,仅仅提供客户需要的行为 

         需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护;接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便

       6.合成复用原则

       简单总结:尽量使用对象组合,而不是继承来达到复用的目的

      7.迪米特法则

      简单总结:一个对象应当对其他对象有尽可能少的了解

                       一个类应该对自己需要耦合或调用的类知道得最少,不关心被耦合或调用的类的内部实现,只负责调用你提供的方法

                       不要和“陌生人”说话、只与你的直接朋友通信----朋友指

  (1) 当前对象本身(this);

             (2) 以参数形式传入到当前对象方法中的对象;

              (3) 当前对象的成员对象;

                        (4) 如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友;

                        (5) 当前对象所创建的对象

    在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限

     在类的设计上,只要有可能,一个类型应当设计成不变类;

     在对其他类的引用上,一个对象对其他对象的引用应当降到最低

继续阅读