设计模式与足球(三)

行为型模式(上)

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

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

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

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

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

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

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

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

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

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

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

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""