2023-04-01
原文作者:LoveLion 原文地址:https://blog.csdn.net/lovelion/article/details/7707380

行为型模式(上)

(13) 职责链模式 :布冯手抛球给基耶利尼、基耶利尼传给皮尔洛、皮尔洛带球过人之后将球直塞给快速插上的巴洛特利,巴洛特利倒钩射门,球进了,球进了,又是巴洛特利,巴洛特利立功了,伟大的意大利前锋!他继承了意大利的光荣传统,巴乔、因扎吉、皮耶罗在这一刻灵魂附体!巴洛特利代表了意大利足球悠久的历史和传统,在这一刻他不是一个人在战斗,他不是一个人!

202304012110413001.png

在此,足球就是一个请求,而球员就是请求的处理者,足球在球员间不断进行传递,构成了一条传递链。

职责链模式(Chain of Responsibility): 为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求;将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

(14) 命令模式 :普兰德利掌心朝外,向前一推,意大利全线压上;普兰德利掌心朝内,向后一拨,意大利全线退防。作为意大利主教练,普兰德利就是命令的发送者,手势就是命令对象,所有队员都是命令的接收者。不同的命令对象将对应不同的执行动作。

命令模式(Command): 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

(15) 解释器模式 :在足球场上,教练的手势就是一门语言,有的表示“传球”,有的表示“全线压上”,有的表示“全线防守”,每个队员都需要在比赛中阅读教练的手势并将其转换成执行指令,按照教练的意图来展开攻守。

解释器模式(Interpreter): 定义语言的文法,并且建立一个解释器来解释该语言中的句子。

(16) 迭代器模式 :下面出场的是西班牙队:1号守门员卡西利亚斯、3号后卫皮克、6号中场球员伊内斯塔、8号哈维、9号托雷斯......一个个来,不急,这次是按照球衣号码,下次再按照位置从前到后、从左到右介绍一次。西班牙队是一个包含多个队员的聚合对象,可以提供一个迭代器来遍历其中的队员。

迭代器模式(Iterator): 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。

(17) 中介者模式 :比赛摔倒怎么办?看裁判;没顶到球怎么办?看裁判;被踢中要害部位怎么办?看裁判;球到底进没进,看裁判!。裁判经常是足球赛场的主角,当两队队员发生冲突时,裁判还是很重要滴,他充当了球员之间的中介者(调停者)。一切需服从裁判,他才是球场的老大!

中介者模式(Mediator): 用一个中介对象来封装一系列的对象交互;中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

阅读全文