GoF23种设计模式 简介

文章目录

面向对象(OO)设计原则(7)

可维护性(Maintainability) ,可复用性(Reusability)

单一职责原则

一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中


开闭原则

软件实体应当对扩展开放,对修改关闭


里氏代换原则

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

在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常:

继承重写的类应可使用:

cipher 密码

依赖倒转原则

高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象

要针对接口编程

增加一个新的类型时需要修改源代码了,违背了开闭原则。

MainClass 依赖 抽象。

接口隔离原则

客户端不应该依赖那些它不需要的接口

这里三个Service可能差异特别大,比如openGL的片元着色器fshader,可能有的模型网格就没有纹理,有的不需要影子,这些网格就可以单独用一个着色器。🤓

合成复用原则

优先使用对象组合,而不是继承来达到复用的目的



自己留Operator

迪米特法则

应该尽量减少对象之间的交互

每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位


创建型模式 (5)

工厂方法模式 (类模式,其余都是对象模式)

有生产方法接口,具体内容由继承后重写决定。


当涉及到多个工厂和多个商品时,工厂方法模式通常会发展为抽象工厂模式。

抽象工厂模式

【不同厂子与相同产品】调用同样的类的方法<多态>

建造者模式

【车与造车】

产品本身与产品的创建过程解耦


原型模式

【拷贝用的函数】

复制 (深/浅)

单例模式

确保一个类只有一个实例


结构型模式 (7)

结构型模式(Structural Pattern)关注如何将现有类或对象组织在一起形成更加强大的结构。

类结构型模式 关心类的组合 【继承关系和实现关系】

对象结构型模式 关心类与对象的组合

适配器模式

【接口转换】

(包装器(Wrapper)模式)


桥接模式

【抽象与实现解耦】

形状与颜色两个维度。


组合模式

【树形结构】

(多叶子)

装饰模式

【动态增加职责】(比子类灵活)

拿到成员,可以调用他的所有方法;若有get方法,就能获取成员。

外观模式

【一组接口放一起调用】

<迪米特法则> 引入一个新的外观角色来降低原有系统的复杂

facade 外观

享元模式

【共享技术】

HashMap可作享元池,存在直接取,不存在再new.

代理模式

【由代理对象来控制对原对象的访问】

extends 扩展

同装饰模式一样,也是加一层。

不过装饰模式想增强功能,而这里是想加条件,而不是改变目标对象的行为。

装饰模式(Decorator) 与 代理模式(Proxy) 的根本区别

装饰模式的主要目的是增强或扩展对象的功能,动态地为对象增加额外的功能或行为。

代理模式的主要目的是控制对目标对象的访问,通常用于延迟加载、安全控制等,而不是改变目标对象的行为。


行为型模式 (11)

行为型模式(Behavioral Pattern) 关注系统中对象之间的交互。

类行为型模式 通过多态等方式来分配父类与子类的职责

对象行为型模式 通过对象关联等方式来分配两个或多个类的职责

解释器模式 (类模式)

解释器用定义的表示解释句子。


node 节点

模板方法模式(类模式)

基于继承的代码复用技术

抽象方法(Abstract Method)

具体方法(Concrete Method)

钩子方法(Hook Method) <插入点>挂接自定义代码

职责链模式

接收对象连接成一条链,沿着传递,直到有一个对象能够处理它为止。


successor 继承人。类成员维持了对下家的引用

命令模式

请求封装为对象


迭代器模式

又名游标(Cursor)模式

提供一种方法顺序访问一个聚合对象中的各个元素,且不用暴露该对象的内部表示。


由迭代器来提供遍历聚合对象内部数据的行为,简化聚合对象的设计,更符合单一职责原则

中介者模式

封装多对多交互。可以使对象之间的关系数量急剧减少。

QQ群

用户只需要将信息或文件发送到群中或上传为群共享文件即可,群的作用就是将发送者所发送的信息和文件转发给每一个接收者,将极大地减少系统中用户之间的两两通信。

colleague 同事

备忘录模式

快照。


originator 创始人

memento 纪念品

caretaker 管理员

观察者模式

一对多,状态改变通知。

假设猫是老鼠和狗的观察目标,老鼠和狗是观察者,猫叫老鼠跑,狗也跟着叫,使用观察者模式描述该过程:

状态模式

状态改变时改变行为。

策略模式

算法封装,可替换


访问者模式

在不改变各元素的类的前提下定义新操作。


相关推荐
JINGWHALE13 小时前
设计模式 结构型 外观模式(Facade Pattern)与 常见技术框架应用 解析
前端·人工智能·后端·设计模式·性能优化·系统架构·外观模式
JINGWHALE16 小时前
设计模式 结构型 代理模式(Proxy Pattern)与 常见技术框架应用 解析
前端·人工智能·后端·设计模式·性能优化·系统架构·代理模式
泰山小张只吃荷园6 小时前
软件体系结构、设计模式、课程期末复习知识点全总结-SCAU
网络·数据库·sql·计算机网络·设计模式·sqlserver
angen20186 小时前
二十三种设计模式-抽象工厂模式
设计模式·抽象工厂模式
玉面小君13 小时前
C#设计模式(行为型模式):备忘录模式,时光倒流的魔法
设计模式·c#·备忘录模式
咖啡の猫14 小时前
单例设计模式
java·开发语言·单例模式·设计模式
不是二师兄的八戒18 小时前
Java 高级设计模式:深度解读与应用实例
java·单例模式·设计模式
谢栋_18 小时前
设计模式从入门到精通之(三)单例模式
java·单例模式·设计模式
玉面小君18 小时前
C#设计模式(行为型模式):观察者模式
观察者模式·设计模式·c#
咖啡の猫19 小时前
设计模式七大原则
设计模式