“行为型”原意:对象之间如何通信
订阅者
- 程序: 事物之前的通信,通过该机制,一个事物说,另外的事物能知道
- 武林:黄忠与法正在定军山斩杀夏侯渊时,法正举白旗,黄忠收到消息表示不进攻。法正举红旗,黄忠收到进攻指示于是下山斩杀了夏侯渊。(此处通过举旗来进行通信)
状态
- 程序:事物有多种状态,经常在状态之前相互切换
- 武林:两个人搏斗,一个人进攻,过了一会累了,他进入防守。(此处进攻和防守就是两种状态)
中介
- 程序:不相互联系,统一跟一个人(中介)联系
- 武林:全真教弟子在演练天罡北斗阵时,马钰说一声“繁星点点”, 众人听到消息,当即出相应动作。(此处马钰即是中介者)
责任链
- 程序:一环接一环,一个人做完事情后还得交接另外给另外一个人
- 武林:戚继光发明的对倭寇的鸳鸯阵,先是持狼筅或盾牌的阻击倭寇,然后持长毛的从后面刺杀。此次即是两个类型的连续,先狙击再刺杀。
- 示例二 ,直摆勾连招中,每招做完都交给下一招接着做。
备忘录
- 程序:软件测试时,需要保存初始数据以进行多种方案的测试
- 武林:散打时,打完几招即恢复“格斗式”初始状态,以继续进行战斗。
解释器
- 程序:制定结束和非结束符,用来分析整篇数据
- 武林:在某武功绝世秘籍中,一共有18招,只有17招,但最后一招未写。最后某个聪明人领悟出,最后一招即是前面17招的总和,将前面17招再打一次。(此处第18招是非结束符)
- 示例二 《新独臂刀》中,雷力独臂用了三把刀才杀掉坏人(先是将另外两把刀挑向天空,待刀落下即可使用),此处把刀挑向天空的做法是非结束符(又新生了2把刀可用)
访问者
- 程序: 不同的人对不同的事物有不同的处理方法
- 武林: 某武术门派派了2人参加某个武术比赛,此2人报了不同的项目,比如A报名了少林镇山棍和大力金刚拳,B报名了少林紫薇棒和少林五形八法拳,那么教练需要针对每个人的每个动作去指导。
模板
- 程序:将事情之间相同的部分抽取出来
- 武林:在学习少林镇山棍和少林紫薇棒两套动作时,就会发现两个套路有相似的动作,即可提取出来(剩下就就是练习不同的部分)
迭代器
- 程序:展示所有数据
- 武林:通过视频或者书来记录某个套路的所有动作(此次视频和书都可展示所有数据。)
策略
- 程序:采取不同的策略去解决好几个问题
- 武林:邵氏电影《残缺》中,有3人分别听力、视力、腿部受伤,高人为了恢复此3人功夫,分别教了每个人不同的功夫来提供其战斗能力,训练A眼力弥补听力(手上带上反光镜片可迅速看到后方),训练B听力来弥补视力,加上C铁脚来弥补腿伤。

命令
- 程序:将“行为请求者”与“行为实现者”抽象解耦,两者之间没有联系
- 武林://todo
本文探讨了编程中的几种行为模式,如通过旗语通信、状态切换、中介者角色、责任链、备忘录模式、解释器模式、访问者模式、模板方法、迭代器和策略模式,以武林故事为比喻,阐述了这些模式在程序设计中的应用和意义。
3753

被折叠的 条评论
为什么被折叠?



