程序员

GOF设计模式摘要汇总

2020-06-06  本文已影响0人  镏金糖豆

参考资料:图说设计模式
参考资料:java-design-patterns

关于GOF设计模式,参考资料繁多。此文档不关注模式的实现细节,仅做对比总结。

为了保持完整性:

删除了性能优化型的模式,[享元模式]。这根本就是优化好吧,设计理论中有性能优化么?

基本原则


结构型模式

1对1结构型

Adapter适配器:


Decorator 装饰


Proxy 代理


关于 代理,装饰,适配器三种 1in1结构模式的对比:

与原对象相关性 侧重点 目的
代理模式 极强,对外方法一致。 间接引用 访问控制、延迟加载、面向切面编程
装饰模式 强。类似继承的关联。 功能增强 非继承实现功能增强,灵活适配。
适配器模式 弱。只要满足适配规则即可。 兼容解耦 兼容老代码,兼容三方库。依赖适配接口而非实现。

多合一结构型

Composite 组合


Facade 外观


Bridge桥接

关于 组合,外观,桥接三种 多合一结构模式的对比:

侧重点 目的
组合模式 简单组合 实在没啥可说的了
外观模式 多子合一 对外统一接口
桥接模式 即插即用 依赖于抽象

构建型模式

1对多构建型

Simple Factory简单工厂


Factory Method工厂方法


Abstract Factory抽象工厂


1对1构建型

Builder构建器


Prototype原型


Singleton单例


行为型模式

1对1交互行为

Command命令


1对多交互行为

Observer 观察者


Chain of responsibility责任链


关于 观察者,责任链,命令三种 通知型模式的对比:

模式 通知方式 是否有反馈 侧重点
观察者 广播,每一个订阅者都通知 解耦,1对n广播式通知
责任链 链式传播,可能会中途返回 有返回信息 层级式链条传播,寻找责任人,接收反馈
命令 一对一精准 动作的undo,redo,整体命令序列的控制

多对多交互行为

Mediator 中介者


抽象

Strategy 策略


Template-Method模板方法


Iterator 迭代器


State 状态


Visitor 访问者


莫名其妙

Memento备忘录


Interpreter 解释器

结语

断断续续的整理完稿,回过头来看关于GOF23其实还是蛮简单的。

​ 简单的模式,只要你有oo思想就能设计出来,不必学习也知道。

​ 经久不衰的模式各大框架现在还在用,在实践中学习深化;

​ 被编程模型淘汰的模式看看就好,不必深究;

​ 莫名其妙的糟粕不理会就好,谁知道是什么历史原因遗留下来的。

上一篇 下一篇

猜你喜欢

热点阅读