写在前面
本文看下GOF 23 种设计模式应用场景,详细的还是通过文章给出参考链接学习下。
1:创建型
1.1:工厂设计模式
参考这篇文章 。
有几种产品需要创建,比如创建红苹果,青苹果,绿苹果,这些对象通过一个对象就可以。
1.2:抽象工厂设计模式
参考这篇文章 。
有几种产品需要创建,但是每种产品不能简单的通过一个对象来表示,比如联想主机,苹果主机,不管是哪种主机,都需要CPU对象,硬盘对象,风机对象等。
1.3:建造设计模式
参考这篇文章 。
一个对象的属性很多,且在不同的场景下对象创建时需要指定的的属性不同。可以有效避免设置大量的构造函数,或者是大量的调用read method,增加代码复杂度,降低可维护性。
1.4:原型模式
参考这篇文章 。
某个对象的创建成本比较高时,直接通过原型设计模式来克隆出一个,java中直接使用java.lang.Cloneable接口,之后调用clone方法即可(注意是浅拷贝)。
1.5:单例模式
参考这篇文章 。
当这个业务中只需要一个对象时。
2:结构型
2.1:适配器设计模式
参考这篇文章 。
当现有的接口无法直接满足客户端的需求时,比如入参不适配,返回值不适配等。
2.2:桥接设计模式
参考这篇文章 。
当一个产品的有多个变化的维度,并且每个维度到底有多少种变化是不确定的,如果是使用常规的继承方式的话可能会有非常非常多的子类,导致类过多而不好维护。
2.3:组合设计模式
参考这篇文章 。
当对象的结构是树形时,使用该设计模式,最典型的比如公司的层结构,家族族谱等。
2.4:装饰设计模式
参考这篇文章 。
当类现有的功能不足以满足客户端的需求,并且又不想使用继承的方式,或者是使用继承的方式不方便时,使用装饰设计模式。
2.5:门面设计模式
参考这篇文章 。
当某个类或者是某几个类的直接使用比较复杂,希望降低客户端的使用复杂度时,可以使用门面设计模式。
2.6:享元设计模式
参考这篇文章 。
当某个对象在程序中需要大量的使用,并且每个对象实例除了部分属性值不同外,其它的都相同,可以考虑使用享元设计模式,并且通过享元工厂创建享元对象还能实现对象缓存的功能。
2.7:代理设计模式
参考这篇文章 。
当一个对象因为安全问题,或者是对其的访问需要记录相关的日志,或者需要事务等时,可以考虑使用代理设计模式。
3:行为型设计模式
3.1:解释器设计模式
参考这篇文章 。
TODO
3.2:模板方法设计模式
参考这篇文章 。
当某个业务功能具有固定的操作步骤,但是不同的场景下有一个或者几个步骤要做的事情不同,其它的步骤都相同时,可以考虑使用模板方法设计模式。
3.3:责任链设计模式
参考这篇文章 。
当一个业务需要多个类中的一个或者是多个来完成时,可以考虑使用责任链设计模式。
3.4:命令设计模式
参考这篇文章 。
当一个类或者是几个类,具体的行为是通过外部的入参来决定时,可以考虑使用命令设计模式。
3.5:迭代器设计模式
参考这篇文章 。
当对象的内部有一组数据需要对外暴露,但又出于如下的原因不想让客户端直接访问内部的存储结构:
1:当内部存储结构发生变化时,客户端已有程序将不可用
2:客户端会破坏内部数据,造成不可控的bug
此时,可以使用迭代器设计模式,使用时可以直接使用jdk提供的java.lang.Iterable,和java.util.Iterator接口。
3.6:中介设计模式
参考这篇文章 。
TODO
3.7:备忘录设计模式
参考这篇文章 。
当需要记录对象在运行过程中的某个时刻的状态,并且在后续的某个时刻恢复到之前的某个时刻状态时,可以考虑使用备忘录设计模式。
3.8:观察者设计模式
参考这篇文章 。
当希望监听某个对象的状态,并在状态发生改变时做出响应,即典型的pub/sub,此时可以考虑使用观察者设计模式。
3.9:状态设计模式
参考这篇文章 。
当一个业务或者是一个对象内部某一个或者是几个状态发生变化,需要执行的操作不同时,可以考虑使用状态设计模式。
3.10:策略设计模式
参考这篇文章 。
当一个操作,根据外部入参的不同,可以通过不同的方式完成时,可以考虑使用策略设计模式,比如支付,可以使用微信支付,支付宝支付等。
3.11:访问者设计模式
参考这篇文章 。
当固定的几个元素(这里很关键,要固定的元素)
,在不同的业务场景下需要承担不同的职责不同时,可以考虑使用访问者设计模式,比如一个家庭有爸爸,妈妈,孩子,在如下不同的场景三者承担的职责不同:
做饭:
爸爸职责:买菜
孩子职责:洗菜
妈妈职责:炒菜
孩子学习:
爸爸职责:拿着鞋子站在孩子左边,孩子不好好学习了,打!!!
妈妈职责:拿着棍子站在孩子右边,孩子不好好学习了,打!!!
孩子职责:好好学习
外出旅游:
爸爸职责:拿行李
妈妈职责:美美的
孩子职责:好好玩
写在后面
参考文章列表
面向对象设计原则和GOF23种设计模式 。文章来源:https://www.toymoban.com/news/detail-604022.html
[永不磨灭的设计模式](https://shusheng007.top/2021/09/07/design-pattern/ 。文章来源地址https://www.toymoban.com/news/detail-604022.html
到了这里,关于GOF 23 种设计模式应用场景分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!