设计模式几个原则

单一职责

定义

一个类只负责一项职责

里氏替换

定义

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

核心思想

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

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

依赖倒置

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

接口隔离

定义

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

核心思想

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

与单一职责比较

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

注意

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

迪米特法则

定义

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

核心思想

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

开闭原则

定义

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

核心思想

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

tips

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

你可能感兴趣的:(设计模式几个原则)