《设计模式 ● 责任链》之业务场景

原创 2012年03月21日 16:29:53

/**************************************************************************************************
** 模式的初衷,无非是为我们经常出现问题的业务逻辑或系统结构提供好的解决方案,不论
** 是高层的还是较低层次的;而应用模式的主要工作则是模式识别,能将单一或复合的模式
** 结合项目自身的业务特性放在适当的场景中,则需要努力追求和不断积累。
************************************************************************************************/

 

       责任链: 解除请求的发送者和接收者之间的耦合,而使多个对象有机会处理这个请求。将这些请求连成一个链,并沿着这条链传递该请求,直到有个对象处理它(诸多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受)。

§ 场景1

       手机平台系统常有提供对手机日程、电话、短信、通话记录等信息的备份,通常应用平台会提供可选择备份项的UI给用户,变化部分主要有以下几点:

1、 系统增加或删除备份项目

2、 用户可选择备份、还原项不固定,致使应用无法良性的判断该执行哪些备份


代码示例:

http://download.csdn.net/download/webwalker/7470265

		//create handler instance
		BaseHandler h1 = new AgendaHandler();
		BaseHandler h2 = new CallHandler();
		BaseHandler h3 = new PhoneHandler();
		BaseHandler h4 = new SmsHandler();		
		//set next chain node
		h1.SetSuccessor(h2);
		h2.SetSuccessor(h3);
		h3.equals(h4);
		
		//process request
		List<String> checkedList = this.GetCheckedListItem();		
		h1.Handle(checkedList);



 


§ 场景2

类似Work flow中面向流程性的处理方案也是一个很好的选择,关于WF这里不在赘述。在面向这种流程性事务处理过程中,简单的说就是你有很多业务,这些业务都有各自的业务处理流程,且这些流程有很多相同的事务处理逻辑,则大可通过将每个主要的业务流程作为一个处理Step、一个链节点,通过配置链节点的先后顺序,来完成一系列业务逻辑的执行过程。而各个节点或事务step可通过上下文实现数据共享与串联(对链中各环节存有共性、异性的地方进行变化封装,而后与主链进行衔接)。

 

§ 场景3

       增值业务中,常有提供规则设置UI给使用者,以便使用者可以委托付款周期、自动充值(按天、按周、按月、按年、按小时)、自动提现等,当然每部分需采用不同的算法策略。在此基础上,主要的变化部分如下:

1、 每个商户可设置的规则类型不固定

2、 每个商户可设置的规则个数不固定

3、 每个商户设置的时间点不固定

通过链接的方式完成不同过则的自动匹配与处理较佳!

 

§ 总结

       除了以上显示的设置链条的节点外,还可采用隐式的方式实现链条节点的自动切换。(也即通过提供统一的抽象方法或接口,实现获取下一个链节点接收对象,在内部完成链节点的切换),另外,针对策略的不同情况,适当时候我们还可以增加针对策略的接口,提供策略可执行判断、不同策略待验证项等等。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

23种设计模式(11):责任连模式

定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 类型:行为类模式 类图:        ...

责任链模式的应用实例

责任链 实例 apache

《复合模式》复杂系统权限控制&设计

有关系统权限的设计,有诸多的方案&实现方法,甚至不乏有权限相关的通用组件,当然这些可能都局限于特定的业务场景,简单的抑或是复杂的,正如它不可能真正满足所有的需求;本文通过另一个维度来实现系统权限的控制...

《设计模式 ● 观察者》之业务场景

/************************************************************************************************** ...

《设计模式 ● 中介者》之业务场景

/************************************************************************************************** ...

《设计模式 ● 外观》之业务场景

/************************************************************************************************** ...

《架构模式应用 ● 设计模式》之装饰者

/************************************************************************************************** ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)