济沧浪 济沧浪
首页
  • Git
  • Linux
  • C++
  • 设计模式
  • CUDA
  • AI
金融

LonelyTaoist

道可道非常道 名可名非常名
首页
  • Git
  • Linux
  • C++
  • 设计模式
  • CUDA
  • AI
金融
  • Git

  • Linux

  • C++

  • 设计模式

    • 六大原则
  • CUDA

  • Python

  • VScode

  • AI

  • 计算机 小知识点
  • 计算机相关博客目录
  • 计算机
  • 设计模式
2021/10/12

六大原则

# 单一职责原则 (Single Responsibility Principle)

一个类只负责一个功能领域中的相应职责。即对一个类而言,应该只存在一个引起它变化的原因(多个职责若总是同时发生改变则可将它们封装在同一类中)。

此原则可降低类的复杂度、提高类的可读性、提高系统的可维护性并且使变更引起的风险降低。这是实现高内聚低耦合的关键。

# 里氏代换原则 (Liskov Substitution Principle)

所有引用基类(父类)的地方必须能透明地使用其子类的对象。

在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。例,我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。

# 依赖倒置原则 (Dependence Inversion Principle)

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程,不要面向实现编程。

满足此原则需要尽量遵循以下四点:

  1. 每个类都提供抽象类。

  2. 变量的声明类型是抽象类。

  3. 任何类都不应该从具体类派生。

  4. 使用继承时尽量遵循里氏替换原则

# 接口隔离原则 (Interface Segregation Principle)

使用多个专门的接口,而不使用单一的总接口。即每一个接口承担一种相对独立的角色。

接口隔离原则和单一职责原则都是为了提高类的内聚性、降低类之间的耦合性,并体现了封装的思想,但单一职责原则侧重功能,而接口隔离原则侧重接口依赖。

# 迪米特原则 (Law of Demeter)

一个软件实体应当尽可能少地与其他实体发生相互作用。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

注意:过度使用迪米特原则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。

# 开闭原则 (Open-Closed Principle)

一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。例,可以为系统定义一个相对稳定的抽象层,而将不同的实现行为移至具体的实现层中完成。如果需要修改系统的行为,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的业务功能即可,实现在不修改已有代码的基础上扩展系统的功能,达到开闭原则的要求。

# 总结

  • 单一职责原则告诉我们实现类要职责单一。
  • 里氏替换原则告诉我们不要破坏继承体系。
  • 依赖倒置原则告诉我们要面向接口编程。
  • 接口隔离原则告诉我们在设计接口的时候要精简单一。
  • 迪米特原则告诉我们要降低耦合。
  • 开闭原则是总纲,告诉我们要对扩展开放,对修改关闭。
C++ 小知识点
CUDA 入门

← C++ 小知识点 CUDA 入门→

最近更新
01
深度学习简单介绍
04/18
02
VScode-ssh 不兼容旧版本 Linux
02/08
03
Centos6.7 安装 python3
01/25
更多文章>
Theme by Vdoing | Copyright © 2023-2024 苏ICP备2023014117号-1 苏公网安备 32011502011853号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式