【大话设计模式】——行为型模式之“顺序模式”

2024-06-13 14:58

本文主要是介绍【大话设计模式】——行为型模式之“顺序模式”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

行为型模式的总结来的有点迟,不过晚到总比不到好啊!

行为型模式是设计模式中分量占的比较多的,所以分类也相对比较麻烦,如图所示:


因为之前在有模板,啥都好说中介绍过模板方法模式,这里就不进行阐释了。下面就上图分类,将行为型模式拆

分成三大部分进行分析。先以顺序模式开始:


顺序模式


我将职责链模式迭代器模式备忘录模式分类到顺序模式里,因为他们都跟或空间,或时间的顺序有比较密

切的关系,不信?你看!

职责链模式——都是领导啊!

还记得职责链模式是如何引出的吗?记得是小菜想涨工资,结果一层一层的往上推责任,直到找到能给他涨工资

的领导为止。这就是一种顺序结构啊!

职责链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对

象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。它的结构图,如图所示:


它的好处是小菜提交加薪请求的时候,可以一直往上申请,直到有一个ConcreteHandler对象负责处理小菜的加

薪,小菜只需坐等加薪就对了!而小菜不需要知道领导层内部结构,且内部结构成员之间也并不需要知道其他

ConcreteHandler,而只需知道如果能处理就自己处理,不能处理交给上层就对了!这样的话就能随时地增加或修改

处理一个请求的结构,增强了给对象指派职责的灵活性。

但是也有可能结构层太多,导致申请时间耗费过长,所以这时候就需要内部结构成员在收到请求的时候进行判

断,而领导层也需要把控全局。

迭代器模式——遍历

先来看看它的定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。看不用我

说,有顺序了吧!

再看看它的结构图:

还记得那个强悍的售票员姐姐吗?真的是行行出状元呢!她就相当于一个迭代器,车上的每个乘客都是这里的聚

合对象中的元素,她能遍历上车的每个乘客,在她的原则里,每个人都必须买票,买完票就通过,否则令其买票,直

到车上所有人都买完票。

由此我们知道,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴

露集合的内部结构,又可让外部代码透明地访问集合内部的数据。

备忘录模式——恢复进度

再来看看这个模式,书上的实例是小菜玩游戏,保存进度,为了最后打掉大BOSS。这是一个反顺序的模式,它将

进度保存到倒数第二关,然后就不用从头开始游戏,直接进入与大BOSS的对决!

看它的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就

可将该对象恢复到原先保存的状态。

再看看结构图:

Originator是发起人,Memento是备忘录,而Caretaker是管理者。备忘录模式的作用就是把要保存的细节封装到

Memento中,等到需要修改的时候就不用影响客户端了。

备忘录模式主要使用与功能比较复杂的,需要维护或记录属性历史的类。如我们现在机房需要保存进度,万一机

房电脑出现问题,我们能恢复保存的进度,以还原系统。现在的系统备份也差不多是这个意思!


总结


这是顺序模式的总结,接下来将是行为型模式中的拟人化模式和中介模式的说明。上一结构型总结,内容过多,

阅读不便。所以改变策略,将内容缩减一下,为了读者方便,也为自己减少压力。在上一篇总结的最后说行为型模式

马上就呈现,结果拖的时间有点长了,总结还是应该及时才对!

这篇关于【大话设计模式】——行为型模式之“顺序模式”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057629

相关文章

如何开启和关闭3GB模式

https://jingyan.baidu.com/article/4d58d5414dfc2f9dd4e9c082.html

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

十四、观察者模式与访问者模式详解

21.观察者模式 21.1.课程目标 1、 掌握观察者模式和访问者模式的应用场景。 2、 掌握观察者模式在具体业务场景中的应用。 3、 了解访问者模式的双分派。 4、 观察者模式和访问者模式的优、缺点。 21.2.内容定位 1、 有 Swing开发经验的人群更容易理解观察者模式。 2、 访问者模式被称为最复杂的设计模式。 21.3.观察者模式 观 察 者 模 式 ( Obser

【数据结构】线性表:顺序表

文章目录 1. 线性表2. 顺序表2.1 概念及结构2.2 接口实现2.3 顺序表的问题及思考 1. 线性表 线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式

剑指offer(C++)--翻转单词顺序列

题目 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? class S

从《深入设计模式》一书中学到的编程智慧

软件设计原则   优秀设计的特征   在开始学习实际的模式前,让我们来看看软件架构的设计过程,了解一下需要达成目标与需要尽量避免的陷阱。 代码复用 无论是开发何种软件产品,成本和时间都最重要的两个维度。较短的开发时间意味着可比竞争对手更早进入市场; 较低的开发成本意味着能够留出更多营销资金,因此能更广泛地覆盖潜在客户。 代码复用是减少开发成本时最常用的方式之一。其意图

Builder模式的实现

概念 在创建复杂对象时,将创建该对象的工作交给一个建造者,这个建造者就是一个Builder。在日常的开发中,常常看到,如下这些代码: AlertDialog的实现 AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setMessage("你好建造者");builder.setTitle

[分布式网络通讯框架]----ZooKeeper下载以及Linux环境下安装与单机模式部署(附带每一步截图)

首先进入apache官网 点击中间的see all Projects->Project List菜单项进入页面 找到zookeeper,进入 在Zookeeper主页的顶部点击菜单Project->Releases,进入Zookeeper发布版本信息页面,如下图: 找到需要下载的版本 进行下载既可,这里我已经下载过3.4.10,所以以下使用3.4.10进行演示其他的步骤。

《分析模式》“鸦脚”表示法起源,Everest、Barker和Hay

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《分析模式》这本书里面用的并不是UML表示法。作者Martin Fowler在书中也说了,该书写于1994-1995年,当时还没有UML。作者在书中用的是一种常被人称为“鸦脚”的表示法。  有的同学会有误解,例如有同学发表以下感想: “鸦脚”表示法当然不是Fowler先使用的。F