博客
关于我
设计模式——七大原则
阅读量:574 次
发布时间:2019-03-09

本文共 1254 字,大约阅读时间需要 4 分钟。

设计模式七大原则

目录

  • 单一职责原则 (Single Responsibility Principle)
  • 接口隔离原则 (Interface Segregation Principle)
  • 依赖倒转原则 (Dependence Inversion Principle)
  • 里氏替换原则 (Liskov Substitution Principle)
  • 开闭原则 (Open Closed Principle)
  • 迪米特法则 (Demeter Principle)
  • 合成复用原则 (Composite Reuse Principle)

单一职责原则 (Single Responsibility Principle)

类的核心原则之一:一个类应专注于执行单一的职责。

如果一个类承担多个职责,且其中一个职责产生变化时可能导致其他职责受到影响,这表明该类的粒度可以被拆分。例如, responsibilities A 和 responsibilities B 应该被分别分配给不同的类,如类 A1 和 A2。


接口隔离原则 (Interface Segregation Principle)

独立于客户端的依赖:一个类与其他类的依赖应基于最小的接口。

这意味着客户端只需要关心所需的接口,而不必关心实现的具体细节。这有助于降低耦合性,提升系统的灵活性。


依赖倒转原则 (Dependence Inversion Principle)

高层模块不应直接依赖底层模块,而是通过抽象层进行交互。

抽象层应控制依赖关系,具体实现留给低层模块。其核心思想是面向接口编程,以确保抽象的稳定性远高于具体实现的多样性。


里氏替换原则 (Liskov Substitution Principle)

一个对象以它的子类型来替代时,系统行为不发生变化。

里氏替换强调,当子类封装时尽量避免重写父类的方法,以确保原有功能不受影响。在适当情况下,可以通过聚合、组合或依赖等方式减少继承带来的耦合性。


开闭原则 (Open Closed Principle)

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

设想:通过扩展行为而非修改现有代码实现变化。抽象化的框架应为实现留下空间,以支持不同实现的多样化发展。


迪米特法则 (Demeter Principle)

对象间的耦合度应最低。

一个对象对直接的朋友了解,具体包括成员变量、方法参数和返回值中的类。此外,局部变量中的类不应视为直接朋友。通过封装,降低对象之间的相互了解程度。


合成复用原则 (Composite Reuse Principle)

优先通过组合而非继承实现复用。

类或对象之间通过聚合或组合实现高效的代码复用,以构建更大的结构,而不是通过继承层级。这种方法有助于减少耦合性,提升系统复用性。


设计原则的核心思想

  • 识别潜在变化点:将不变的部分与可能变化的部分分离。
  • 面向接口编程:建立在抽象基础上的设计更具稳定性。
  • 追求松耦合设计:通过适当的设计削弱对象间的紧密耦合。
  • 转载地址:http://wkgiz.baihongyu.com/

    你可能感兴趣的文章
    02-Docker镜像分类及操作秘籍,轻松掌握导出、导入、删除
    查看>>
    03-docker容器的基本操作
    查看>>
    03-docker系列-docker容器的基本操作
    查看>>
    04-docker-commit构建自定义镜像
    查看>>
    04-docker系列-commit构建自定义镜像
    查看>>
    05-docker系列-使用dockerfile构建镜像
    查看>>
    05-如何通过Dockerfile实现高效的应用容器化?
    查看>>
    06-docker系列-使用dockerfile构建nginx、redis镜像
    查看>>
    06-使用dockerfile构建nginx、redis镜像
    查看>>
    07-docker系列-使用dockerfile构建python、jenkins镜像
    查看>>
    07-使用dockerfile构建python、jenkins镜像
    查看>>
    08-docker系列-docker网络你了解多少(上)
    查看>>
    09-docker系列-docker网络你了解多少(下)
    查看>>
    1 解决XP重装后原文件夹拒绝访问
    查看>>
    10-docker系列-docker文件共享和特权模式
    查看>>
    #AMBA##AHB总线学习
    查看>>
    #C++# 关于 #ifdef __cplusplus extern “C“ { #endif
    查看>>
    #C2#S2.1# 一个简单的UVM验证平台
    查看>>
    #C2#S2.2~S2.3# 加入 factory/objection/virtual interface 机制
    查看>>
    #C8# UVM中的factory机制 #S8.1.1# OOP 语言三大特性 systemverilog的支持
    查看>>