关闭

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

标签: 设计模式手机平台ui算法
4607人阅读 评论(0) 收藏 举报
分类:

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

 

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

§ 场景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、 每个商户设置的时间点不固定

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

 

§ 总结

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


0
0
查看评论

责任链模式的应用实例

责任链 实例 apache
  • oooooooooooooaaa
  • oooooooooooooaaa
  • 2010-10-23 22:51
  • 7163

责任链模式的7种不同实现

引言责任链模式是经典的GoF 23种设计模式之一,也许你已经了解这种模式。不管你是否熟悉,建议读者在阅读本文之前,不妨先思考下面三个问题: 1. 如何用多种风格迥异的编程范式来实现责任链模式? 2. 能否让责任链上的结点多任务并发执行? 3. 能否把责任链部署到分布式环境下,分布在...
  • liuwenzhe2008
  • liuwenzhe2008
  • 2017-04-19 13:32
  • 2252

【设计模式 - 13】之责任链模式(Chain Of Responsibility)

1      模式简介 责任链模式的简介: 1.        责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象...
  • ITGungnir
  • ITGungnir
  • 2016-12-11 09:30
  • 271

责任链模式综述(基础篇)

本篇综述责任链模式的提出动机、原理结构、典型实现和应用场景,并结合实例展现了其灵活性和可插拔性。首先,结合生活中“打扑克”的例子引出了责任链模式动机和应用场景,然后我们概述了责任链模式的内涵和结构,即通过建立一条责任链来组织请求的处理者,请求将沿着链进行传递,而请求发送者无须知道请求在何时、何处以及...
  • justloveyou_
  • justloveyou_
  • 2017-03-30 16:28
  • 2528

责任链模式

前一阵子仔细看了一下Tomcat的Filter实现,才知道这个叫做责任链模式。正好借此机会了解了一下。 责任链模式属于行为设计模式中的一种。概念责任链模式用来在设计时实现松耦合的一种方式,适用于当客户端发送的请求对象需要进行一系列的处理的场景。然后,request对象会在责任链中来处理,在执行单元...
  • EthanWhite
  • EthanWhite
  • 2016-11-27 14:06
  • 765

责任链模式以及责任链模式在netty中的使用

职责链模式 将对象连成一条链,使得请求可以在链中进行传递,直到有一个对象处理他为止。   责任链中的角色 抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。 ...
  • lionaiying
  • lionaiying
  • 2016-12-28 22:58
  • 962

【设计模式】—-(22)责任链模式(行为型)

一、定义(概念) 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 二、适用场景 1 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 2 你想在不明确指定接受者的情况下,想...
  • singit
  • singit
  • 2017-02-06 22:40
  • 319

职责链模式

1.职责链模式概述很多情况下,在一个软件系统中可以处理某个请求的对象不止一个,例如SCM系统中的采购单审批,主任、副董事长、董事长和董事会都可以处理采购单,他们可以构成一条处理采购单的链式结构,采购单沿着这条链进行传递,这条链就称为职责链。职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链...
  • u014231889
  • u014231889
  • 2017-03-24 11:19
  • 151

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

/************************************************************************************************** ** 模式的初衷,无非是为我们经常出现问题的业务逻辑或系统结构提供好的解决方案,不论 ** 是高...
  • webwalker
  • webwalker
  • 2012-03-21 16:29
  • 4607

责任链模式

顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会...
  • qq_38131668
  • qq_38131668
  • 2018-01-29 09:37
  • 13
    个人资料
    • 访问:407550次
    • 积分:5499
    • 等级:
    • 排名:第5774名
    • 原创:143篇
    • 转载:70篇
    • 译文:0篇
    • 评论:58条
    最新评论