设计模式精炼(四): 行为型00
责任链模式
请求以链式传递,具体哪个类处理客户端不知。Tomcat的Filter处理过程便是责任链模式。
|- 抽象处理者:定义接口,并且持有下一个处理类的对象。
|- 具体处理者:可以根据条件判断是否处理或者移交给下一个处理类处理。
例:
命令模式
把发出命令的责任和执行命令的责任分离,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。
例:
注:命令模式使得客户端和具体实现命令的接收者对象完全解耦。
解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
|- 通俗来讲就是定义一些规则,用你自己的方式来实现这些规则,并且调用此规则来完成一些功能。
例:
以上代码运行结果为:
John is male? true
Julie is a married women? true
中介者模式
为了减少同事类之间的耦合,独立改变他们之间的交互。
|- 同事类:如果一个对象会影响其他的对象,同时也会被其他对象影响,那么这两个对象称为同事类。
|- 情景:类A和类B都持有一个数,要保证A中的数字改变的时候B中的数字乘以100,B中的数字改变的时候,A中的数字除以100。
例(传统方式):
运行结果:
---------设置A影响B---------
collA的值 :500
collB的值 :50000
---------设置B影响A---------
collA的值 :25006
collB的值 :2500600
例(中介者模式:让中介类参与其中,避免A和B的直接交互):
运行结果如下:
---------设置A影响B---------
collA的值 :500
collB的值 :50000
---------设置B影响A---------
collA的值 :25006
collB的值 :2500600
注:一般来说,只有对于那种同事类之间是网状结构的关系,才会考虑使用中介者模式。可以将网状结构变为星状结构,使同事类之间的关系变的清晰一些。
|- 网状结构:类与类之间是多对多的关系,牵一发而动全身。
|- 星状结构:各类都与中介类单独联系,不与其他的类牵连。
本文转载自微信公众号【java学习之道】。
- 点赞
- 收藏
- 关注作者
评论(0)