码迷,mamicode.com
首页 > 其他好文 > 详细

设计原则

时间:2018-12-17 16:56:53      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:level   应该   dip   方法   gre   条件   完全   lsp   -o   

六大原则

  • 单一职责原则告诉我们实现类要职责单一;
  • 里氏替换原则告诉我们不要破坏继承关系;
  • 依赖倒置原则告诉我们要面向接口编程;
  • 接口隔离原则告诉我们在设计接口的时候要精简单一;
  • 迪米特法则告诉我们要降低耦合;
  • 开闭原则告诉我们要对扩展开放,对修改封闭;

Open Closed Principle(OCP):开闭原则

  • Open for extension,Closed for modification:当软件需求变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现.
  • 用抽象构建架构,用实现扩展细节.因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保证架构的稳定.在软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求重新派生一个实现类来扩展就可以了,当然前提是抽象要合理,要对需求的变更有前瞻性和预见性.

Single responsibility principle(SRP):单一功能原则

  • 核心:一个类应该有且只有一个变化的原因.
  • 单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心.

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

  • 定义1:所有引用基类的地方必须能透明地使用其子类的对象.
  • 定义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.

  • 四层含义:
    1.子类必须完全实现父类的抽象方法,但不能覆盖父类的非抽象方法.
    2.子类中可以增加自己特有的方法.
    3.当子类的方法重载父类的方法时,方法的前置条件(方法的形参)要比父类方法的输入参数要更宽松;
    4.当子类的方法实现父类的抽象方法时,方法的后置条件(方法的返回值)要比父类更严格.

Dependency 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 abstracts.
  • 高层模块不应该依赖低层模块,两者都应该依赖抽象
  • 抽象不应该依赖细节
  • 细节应该依赖抽象

Interface Segregation Principle(ISP):接口隔离原则

  • 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上.
  • 含义:一个类对另一个类的依赖应该建立在最小的接口上;一个接口代表一个角色,不应该将不同的角色都交给一个接口,因为这样可能会形成一个臃肿的大接口;
    不应该强迫客户依赖他们从来不用的方法.

Law of Demeter(LoD):迪米特法则

  • 定义:又叫做最少知识原则,也就是说,一个对象应当对其他对象尽可能少的了解,不和陌生人说话.(Talk only to your immediate friends.)

  • 解释:
    一个软件实体应当尽可能少的与其他实体发生相互作用.每个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位.迪米特法则的初衷在于降低类之间的耦合,由于每个类尽量减少对其他类的依赖,因此很容易使得系统的功能模块独立,相互之间不存在(或很少有)依赖关系.

设计原则

标签:level   应该   dip   方法   gre   条件   完全   lsp   -o   

原文地址:https://www.cnblogs.com/o-v-o/p/10132171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!