main(),
IObservable,被观察者接口
CHanFeiZiObservable,被观察者韩非子
IObserver,观察者接口
CLiSiObserver,观察者李斯
CZhouSiObserver观察者周斯
说明:将观察者聚集到被观察者韩非子身边,韩非子的每一个举动都会通知给观察者,如李斯或周斯。
注意:最多允许一个对象既是观察者也是被观察者。就像数据库中的触发器一样,成为一个复杂的链就很难维护了。观察者类似于委托的处理方式。
概念:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
main(),客户
IWomen,发出请求者接口
CWomen,请求者实现类
CHandler,处理请求抽象类
CFather,处理请求实现类,责任链之一
CHusband,处理请求实现类,责任链之二
CSon,处理请求实现类,责任链之三
说明:CHandler抽象类负责聚合责任链之中的其它处理对象,用SetNext来建立这个责任链。HandleMessage在处理请求时,会判断是否是自己要处理的请求,如果是则直接处理。如果不是,则查找下一个责任链上的处理对象,找到了则由下一个处理。
访问者模式:
18.1.解释
概念:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
main(),客户
IVisitor,访问者接口
CBaseVisitor,访问者实现类
CEmployee,被访问者抽象类
CCommonEmployee,被访问者实现类之一
CManager,被访问者实现类之二
说明:A接受B的访问,B主动的执行访问动作。
注意:和观察者的区别是,被观察者要执行一个动作,然后主动发送通知给观察者。访问者模式是由访问者主动发出的动作。