GOF 23 种设计模式应用场景分析

这篇具有很好参考价值的文章主要介绍了GOF 23 种设计模式应用场景分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

本文看下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://shusheng007.top/2021/09/07/design-pattern/ 。文章来源地址https://www.toymoban.com/news/detail-604022.html

到了这里,关于GOF 23 种设计模式应用场景分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gof23设计模式之桥接外观模式

    又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 外观(Facade)模式包含

    2024年02月15日
    浏览(47)
  • Gof23设计模式之模板方法模式

    定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 模板方法(Template Method)模式包含以下主要角色: 抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个

    2024年02月13日
    浏览(57)
  • Gof23设计模式之责任链模式

    责任链模式又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 职责链模式主要包含以下角色: 抽象处理者(

    2024年02月09日
    浏览(39)
  • Gof23设计模式之建造者模式

    建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和

    2024年02月11日
    浏览(50)
  • Gof23设计模式之单例模式(完整)

    单例模式(Singleton pattern)是Java中最简单的设计模式之一。这种设计模式属于创建型模型,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访

    2024年02月10日
    浏览(54)
  • 【有趣的设计模式】23 种设计模式详解和场景分析

    七大设计原则 1、单一原则:一个类只负责一个职责 2、开闭原则:对修改关闭,对扩展开放 3、里氏替换原则:不要破坏继承关系 4、接口隔离原则:暴露最小接口,避免接口过于臃肿 5、依赖倒置原则:面向抽象编程 6、迪米特 法则:尽量不跟陌生人讲话 7、合成复用原则:

    2024年02月14日
    浏览(42)
  • 创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWLAOFtO-1691793071647)(./assets/%E7%8E%84%E5%AD%90Share%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20GOF%20%E5%85%A823%E7%A7%8D%20+%20%E4%B8%83%E5%A4%A7%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99.png)] GoF(Gang of Four)是四位计算机科学家(Erich Gamma、Ri

    2024年02月12日
    浏览(35)
  • 前端的23种设计模式及应用场景

    设计模式是在软件开发中经过验证的解决问题的方法。它们是从经验中总结出来的,可以帮助我们更好地组织和管理代码,提高代码的可维护性、可扩展性和可重用性。无论是前端还是后端开发,设计模式都扮演着重要的角色。在本专栏中,我们将探索一些常见的前端设计模

    2024年02月20日
    浏览(39)
  • 23种设计模式-备忘录模式(Android应用场景介绍)

    备忘录模式 是一种行为型设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 备忘录模式通常包括三个角色:原发器(Originator)、备忘录(Memento)和负责人(Caretaker)。原发

    2023年04月16日
    浏览(48)
  • 23种设计模式-仲裁者模式(Android应用场景介绍)

    仲裁者模式 是一种行为设计模式,它允许将对象间的通信集中到一个中介对象中,以减少对象之间的耦合度。本文将通过Java语言实现仲裁者模式,并介绍如何在安卓开发中使用该模式。 实现仲裁者模式 我们将使用一个简单的例子来说明仲裁者模式的实现,假设我们有三个类

    2023年04月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包