美文网首页软件设计模式专题
设计模式的六大原则

设计模式的六大原则

作者: ProZoom | 来源:发表于2017-09-07 20:06 被阅读4次

Author:ProZoom

Hobby:爱折腾、爱思考,想静静的ProZoom

Github --- 简书 --- CSDN --- 关于我


六大基本原则

1. 单一职责原则

全称:Single Responsibility Principle

缩写:SRP

定义:一个类应该有且只有一个变化的原因(There should never be more than one reason for a class to change.)

定义解读:《UNIX编程艺术》中提到的一句话和这篇文章很贴切:Do one thing,and do it well。通俗的说,即一个类只负责一项职责

2. 开闭原则

全称:Open Close Principle

缩写:OCP

定义:一个软件实体(如类、模块、函数)应当对扩展开放,对修改关闭。

定义解读:

3. 里氏替换原则

全称:Liskov Substitution principle

缩写:LSP

定义:任何一个基类可以出现地方,子类一定可以出现,并且不会产生任何错误(注意:必须是父子关系)

定义解读:第一个注意:里氏替换原则核心就是抽象(继承和接口)每一个子类都会拥有父类的方法属性

第二个注意:开闭原则和里氏替换原则生死相依,通过里氏替换原则达到了对外开放,对修改关闭

里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  • 子类中可以增加自己特有的方法。
  • 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

4. 依赖导致原则

全称:Dependence Inversion Principle

缩写:DIP

定义:高层次模块不依赖于低层次模块实现细节

定义解读:说白了,依赖于抽象,不依赖具体实现指导子类实现功能细节,依赖倒置原则的核心就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。

5. 接口隔离原则

全称:Interface Segregation Principle

缩写:ISP

定义:类与类之间的依赖关系应该是建立在最小的接口上

6. 迪米特原则--最少知识原则

全称:Least Knowledge Principle

缩写:LKP

定义:一个对象应该对其他的对象有最少的了解

设计原则总结

六大基本原则都是基于抽象(抽象类和接口)

相关文章

  • 设计模式

    设计模式六大原则[设计模式六大原则(1):单一职责原则][设计模式六大原则(2):里氏替换原则][设计模式六大原则...

  • 设计模式-六大原则

    转载自 设计模式六大原则 目录:- 设计模式六大原则(1):单一职责原则- 设计模式六大原则(2):里氏替换原则-...

  • 设计模式六大原则

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...

  • 设计模式6大原则

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...

  • 设计原则之6大原则

    目录:设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置...

  • 设计模式 - 六大原则

    Reference 快速理解-设计模式六大原则 设计模式的六大原则 设计模式之六大原则作者:海子出处:http:/...

  • 设计模式(二):六大原则

    参考:设计模式六大原则简书-快速理解-设计模式六大原则注意:IoC 也属于设计模式吧。 设计模式六大原则(1):单...

  • 无标题文章

    设计模式之六大原则(转载) 设计模式之六大原则(转载) 关于设计模式的六大设计原则的资料网上很多,但是很多地方解释...

  • 设计模式六大原则

    设计模式之六大原则(转载) 关于设计模式的六大设计原则的资料网上很多...

  • 设计模式目录

    1. 设计模式中类的关系和六大设计原则 一、设计模式简介二、设计模式中类的关系三、设计模式的六大设计原则之单一职责...

网友评论

    本文标题:设计模式的六大原则

    本文链接:https://www.haomeiwen.com/subject/adhwjxtx.html