设计模式精炼(四): 行为型00

举报
且听风吟 发表于 2019/10/28 20:07:29 2019/10/28
【摘要】 本文将介绍设计模型之行为型00。

责任链模式

请求以链式传递,具体哪个类处理客户端不知。Tomcat的Filter处理过程便是责任链模式。
|- 抽象处理者:定义接口,并且持有下一个处理类的对象。
|- 具体处理者:可以根据条件判断是否处理或者移交给下一个处理类处理。
例:

image.png

命令模式

把发出命令的责任和执行命令的责任分离,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。
例:

image.png

注:命令模式使得客户端和具体实现命令的接收者对象完全解耦。

解释器模式

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
|- 通俗来讲就是定义一些规则,用你自己的方式来实现这些规则,并且调用此规则来完成一些功能。
例:

image.png

以上代码运行结果为:
John is male? true
Julie is a married women? true

中介者模式

为了减少同事类之间的耦合,独立改变他们之间的交互。
|- 同事类:如果一个对象会影响其他的对象,同时也会被其他对象影响,那么这两个对象称为同事类。
|- 情景:类A和类B都持有一个数,要保证A中的数字改变的时候B中的数字乘以100,B中的数字改变的时候,A中的数字除以100。
传统方式):

image.png

运行结果:
---------设置A影响B---------
collA的值 :500
collB的值 :50000
---------设置B影响A---------
collA的值 :25006
collB的值 :2500600

中介者模式:让中介类参与其中,避免A和B的直接交互):

image.png

运行结果如下:
---------设置A影响B---------
collA的值 :500
collB的值 :50000
---------设置B影响A---------
collA的值 :25006
collB的值 :2500600

注:一般来说,只有对于那种同事类之间是网状结构的关系,才会考虑使用中介者模式。可以将网状结构变为星状结构,使同事类之间的关系变的清晰一些。
|- 网状结构:类与类之间是多对多的关系,牵一发而动全身。
|- 星状结构:各类都与中介类单独联系,不与其他的类牵连。


本文转载自微信公众号【java学习之道】。

原文链接:https://mp.weixin.qq.com/s?__biz=MzU4NzYwNDAwMg==&mid=2247484045&idx=1&sn=0ac4c89e7666bfdc62d83ef18c649f7c&chksm=fde8cbc0ca9f42d6d6d6773a0b05e13086bbfe1f3b6d04b1ce56d9f0fbd48da167fc176fd2d2&scene=0#rd


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200