设计模式几个原则

单一职责

定义

一个类只负责一项职责

里氏替换

定义

引用基类的地方必须能透明地使用其子类的对象

核心思想

子类可以扩展父类的功能,但不能改变父类原有的功能

  • 1 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
  • 2 子类中可以增加自己特有的方法
  • 3 当子类的方法重载父类的方法时,方法的形参要比父类方法的输入参数更宽松
  • 4 当子类的方法实现父类的抽象方法时,方法的返回值要比父类更严格

依赖倒置

  • 定义
    高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象
  • 核心思想
    面向接口编程
  • 好处
    降低类之间的耦合性,提高系统的稳定性,降低修改程序造成的危险
  • 方法
    1 底层模块尽量有抽象类或接口
    2 变量的声明类型尽量是抽象类或接口
    3 使用继承时遵循里氏替换原则

接口隔离

定义

客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应建立在最小的接口上

核心思想

建议单一接口,避免接口庞大臃肿,尽量细化接口,接口中的方法尽量少
通过分散定义多个接口,预防外来变更的扩散,提高系统的灵活性和可维护性

与单一职责比较

  • 1 单一职责原则注重职责,接口隔离原则注重对接口依赖的隔离
  • 2 单一职责主要是约束类,其次是接口和方法,针对程序中的实现和细节;接口隔离原则主要约束接口,针对抽象,针对程序整体框架的构建

注意

1 接口尽量小且适度
2 为依赖接口的类定制服务,只暴露给调用类需要的方法,隐藏不需要的方法
3 提高内聚,减少对外交互

迪米特法则

定义

一个对象应该对其他对象保持最小的了解

核心思想

尽量降低类与类之间的耦合,只与直接的朋友通信

开闭原则

定义

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

核心思想

当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化
用抽象构建框架,用实现扩展细节

tips

单一职责 : 类要职责单一
里氏替换 : 不要破坏继承体系
依赖倒置 : 面向接口编程
接口隔离 : 接口设计要精简单一
迪米特 : 降低耦合
开闭原则 : 对扩展开放,对修改关闭

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式六大原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类...
    viva158阅读 780评论 0 1
  • 转载标注声明:http://www.uml.org.cn/sjms/201211023.asp 目录:[设计模式六...
    Bloo_m阅读 737评论 0 7
  • 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 ...
    Jabir_Zhang阅读 650评论 0 3
  • 单一职责原则 (SRP) 全称 SRP , Single Responsibility Principle 单一职...
    米莉_L阅读 1,787评论 2 5
  • 做后台产品的时候,为了避免设计地凌乱,想了解一些系统设计模式思想,于是找高内聚低耦合相关的文章。这篇文章是摘自网友...
    徐薇薇阅读 2,209评论 0 0