1700464612
设计模式之禅 16.3 责任链模式的应用
1700464613
1700464614
16.3.1 责任链模式的优点
1700464615
1700464616
责任链模式非常显著的优点是将请求和处理分开。请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌(例如在J2EE项目开发中,可以剥离出无状态Bean由责任链处理),两者解耦,提高系统的灵活性。
1700464617
1700464618
1700464619
1700464620
1700464621
设计模式之禅 16.3.2 责任链模式的缺点
1700464622
1700464623
责任链有两个非常显著的缺点:一是性能问题,每个请求都是从链头遍历到链尾,特别是在链比较长的时候,性能是一个非常大的问题。二是调试不很方便,特别是链条比较长,环节比较多的时候,由于采用了类似递归的方式,调试的时候逻辑可能比较复杂。
1700464624
1700464625
1700464626
1700464627
1700464628
设计模式之禅 16.3.3 责任链模式的注意事项
1700464629
1700464630
链中节点数量需要控制,避免出现超长链的情况,一般的做法是在Handler中设置一个最大节点数量,在setNext方法中判断是否已经是超过其阈值,超过则不允许该链建立,避免无意识地破坏系统性能。
1700464631
1700464632
1700464633
1700464634
1700464636
设计模式之禅 16.4 最佳实践
1700464637
1700464638
在例子和通用源码中Handler是抽象类,融合了模板方法模式,每个实现类只要实现两个方法:echo方法处理请求和getHandlerLevel获得处理级别,想想单一职责原则和迪米特法则吧,通过融合模板方法模式,各个实现类只要关注的自己业务逻辑就成了,至于说什么事要自己处理,那就让父类去决定好了,也就是说父类实现了请求传递的功能,子类实现请求的处理,符合单一职责原则,各个实现类只完成一个动作或逻辑,也就是只有一个原因引起类的改变,我建议大家在使用的时候用这种方法,好处是非常明显的了,子类的实现非常简单,责任链的建立也是非常灵活的。
1700464639
1700464640
责任链模式屏蔽了请求的处理过程,你发起一个请求到底是谁处理的,这个你不用关心,只要你把请求抛给责任链的第一个处理者,最终会返回一个处理结果(当然也可以不做任何处理),作为请求者可以不用知道到底是需要谁来处理的,这是责任链模式的核心,同时责任链模式也可以作为一种补救模式来使用。举个简单例子,如项目开发的时候,需求确认是这样的:一个请求(如银行客户存款的币种),一个处理者(只处理人民币),但是随着业务的发展(改革开放了嘛,还要处理美元、日元等),处理者的数量和类型都有所增加,那这时候就可以在第一个处理者后面建立一个链,也就是责任链来处理请求,如果是人民币,好,还是第一个业务逻辑来处理;如果是美元,好,传递到第二个业务逻辑来处理;日元、欧元……这些都不用在对原有的业务逻辑产生很大改变,通过扩展实现类就可以很好地解决这些需求变更的问题。
1700464641
1700464642
责任链在实际的项目中使用也是比较多的,我曾经做过这样一个项目,界面上有一个用户注册功能,注册用户分两种,一种是VIP用户,也就是在该单位办理过业务的,一种是普通用户,一个用户的注册要填写一堆信息,VIP用户只比普通用户多了一个输入项:VIP序列号。注册后还需要激活,VIP和普通用户的激活流程也是不同的,VIP是自动发送邮件到用户的邮箱中就算激活了,普通用户要发送短信才能激活,为什么呢?获得手机号码以后好发广告短信啊!项目组就采用了责任链模式,甭管从前台传递过来的是VIP用户信息还是普通用户信息,统一传递到一个处理入口,通过责任链来完成任务的处理,类图如图16-5所示。
1700464643
1700464644
1700464645
1700464646
1700464647
图16-5 用户注册类图
1700464648
1700464649
其中RegisterAction是继承了Strust2中的ActionSupport,实现HTTP传递过来对象组装,组装出一个HashMap对象UserInfoMap,传递给Handler的两个实现类,具体是那个实现类来处理的,就由HashMap上的用户标识来做决定了,这个和上面我们举的例子很类似,读者可以自行实现。
1700464650
1700464651
1700464652
1700464653
1700464655
设计模式之禅 第17章 装饰模式
1700464656
1700464658
17.1 罪恶的成绩单
1700464659
1700464660
“中庸”是中国儒教文化的集中体现,说话或做事情都不能太直接,需要有技巧。比如谈话,如果你要批评某个人,你不能一上来就说他这做得不对,那做得不对,你要先肯定他的成绩,表扬一下优点;然后再指出不足,指出错误的地方,最后再来点激励,你修改了这些缺点后有哪些好处,比如你能带更多的小兵,升职等。如果你一上来就是一顿批评,你瞅瞅看,对方肯定是不服气,顶撞甚至是直接说:“此处不养爷,自有养爷处”,于是甩门而去。
[
上一页 ]
[ :1.700464611e+09 ]
[
下一页 ]