设计模式的六大原则(简单的概念)

来源:互联网 发布:java 文件拷贝 编辑:程序博客网 时间:2024/06/14 13:27
设计模式的六大原则:
  1.单一职责原则
        英文名称是Single Responsibility Principle,简称是SRP。
        SRP的原话解释是:There should never be more than one reason for a class to change(应该有且仅有一个原因引起类的变更)
  2.里氏替换原则
        ● 第一种定义,也是最正宗的定义:If for each object o1 of type S there is an object o2 of
          type T such that for all programs P defined in terms of T,the behavior of P is unchanged when o1 is
          substituted for o2 then S is a subtype of T.(如果对每一个类型为S的对象o1,都有类型为T的对
          象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变
          化,那么类型S是类型T的子类型。)
        ● 第二种定义:Functions that use pointers or references to base classes must be able to use
          objects of derived classes without knowing it.(所有引用基类的地方必须能透明地使用其子类的
          对象。)
        
        契约设计:里氏替换原则也要求制定一个契约,就是父类或接口,这种设计方法也叫做 Design by Contract(契约设计)
        
    3.依赖倒置原则
        英文名称是Dependence Inversion Principle,简称DIP。
        依赖倒置原则的原始定义是:High level modules should not depend upon low level modules.Both should depend upon
        abstractions.Abstractions should not depend upon details.Details should depend upon abstractions.
        
        翻译过来,包含三层含义:
        ● 高层模块不应该依赖低层模块,两者都应该依赖其抽象;
        ● 抽象不应该依赖细节;
        ● 细节应该依赖抽象。

        依赖倒置原则在Java语言中的表现就是:
        ● 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过
        接口或抽象类产生的;
        ● 接口或抽象类不依赖于实现类;
        ● 实现类依赖接口或抽象类。
        更加精简的定义就是面向接口编程——OOD(Object-Oriented Design)
        
        
    4.接口隔离原则
       其包含4个含义:
       ● 接口要尽量小
       ● 接口要高内聚
       ● 定制服务
       ● 接口设计是有限度的
    
    5.迪米特法则
        英文名称是:Law of Demeter,简称LoD,也称为最少知识原则(Least Knowledge Principle,LKP)
        迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义:
        1. 只和朋友交流
        2. 朋友间也是有距离的
        3. 是自己的就是自己的
        4. 谨慎使用Serializable
    
    6.开闭原则
        开闭原则的定义:Software entities like classes,modules and functions should be open for extension but closed for

        modifications.(一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。)




具体细节可参考(书名:设计模式之禅)

0 0