设计模式七大原则

七大原则有:

  • 单一原则原则
  • 接口隔离原则
  • 依赖倒转原则
  • 里氏替换原则
  • 开闭原则
  • 迪米特法则
  • 合成复用原则

1 单一职责原则

1.1 基本介绍

​ 对类来说的,即一个类应该只负责一项职责。 如类A负责两个不同的职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。

1.2 应用实例

交通工具

单例模式:static private 懒汉写开,饿汉写一块。

2 接口隔离原则

2.1 基本介绍

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

类A通过接口Interfacel 依赖类B,类C通过接口Interface1 依赖类D,如果接口Interfacel 对于类A和类C来说不是最小接口,那么类B和类D必须去实现他们不需要的方法。

隔离原则应当这样处理:

接口Interface1拆分为独立的几个接口类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则

3 依赖倒转原则

4 里氏替换原则

尽可能少的重写父类,创建更加基础的基类,让A和B都去继承这个基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替。

5 开闭原则

开闭原则是编程中最基础,最重要的设计原则

当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

6 迪米特法则

(最少知道原则)

陌生的类最好不要以局部变量的形式出现在类的内部。只与直接朋友通信

直接朋友:我们称出现成员变量,方法参数,方法返回值中的类为直接朋友。

非直接朋友应该封装起来。

迪米特法则至少要求降低类与类直接的耦合,而不是不能耦合。

7 合成复用原则

原则是尽量使用合成/聚合的方式,而不是使用继承。

相关推荐
一木 之林2 小时前
第 8 节 C++ 设计模式在 AI 推理 SDK 和 Agent 工具运行时中如何落地
c++·人工智能·设计模式
Zane19945 小时前
MVC 三层架构被打上反模式标签?一次账户扣款需求,讲清楚贫血模型和充血模型该怎么选
设计模式
geovindu1 天前
rust:Builder Pattern
开发语言·设计模式·rust·建造者模式
小王师傅661 天前
【设计模式】装饰模式(三):从装饰模式看 Java 与面向对象设计(原理篇)
设计模式
Zane19941 天前
从一次支付渠道扩展需求,看懂"多用组合少用继承"到底在说什么
设计模式
geovindu1 天前
CSharp:Condition Variable Pattern
后端·设计模式·c#·.net·.netcore·条件变量模式·同步型模式
geovindu1 天前
sql: Data Modeling Patterns using mysql
sql·mysql·设计模式·数据库开发
sarasuki2 天前
失败重试:Agent 中指数退避的正确姿势
人工智能·设计模式·agent
Zane19942 天前
为什么你写的 Java 代码"看着面向对象、实际是面向过程"?
设计模式
geovindu2 天前
sql: Data Modeling Patterns
数据库·sql·设计模式·sqlserver