欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【浅谈.net 中的职责链模式的使用】,下面是详细的分享!
浅谈.net 中的职责链模式的使用
职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对明处理它为止。
职责链模式的结果如下图:
.

Handler:定义一个处理请求的接口并实现后继链.
ConcreteHandler:处理负责的请求并可访问后继者.如果可处理该请求,则处理之,否则将该请求转发给后继者.
Client:向链上的具体处理者对象提交请求.
在这里先用一个简单的例子计算所得税来说明一下职责链模式在应用中的作用
先简要的说一下计算所得税的方法:
以成都为例:
计算金额----------------------应纳税额---------个税率
1、2000元/月以内免税;
2、2000元/月以上至2500元/月----不超过500元----5%
3、2500元/月以上至4000元/月----500元至2000元----10%
4、4000元/月以上至7000元/月----2000元至5000元----15%
5、7000元/月以上至22000元/月----5000元至20000元----20%
6、22000元/月以上至42000元/月----20000元至40000元----25%
7、42000元/月以上至62000元/月----40000元至60000元----30%
8、62000元/月以上至82000元/月----60000元至80000元----35%
9、82000元/月以上至102000元/月----80000元至100000元----40%
10、102000元/月以上----100000元以上----45%
(工资-2000)*相应工资范围的个税率
当你看到这样的一个计算方式之后你心里是不是已经有了自己的想法了?写一系列的if语句来一条条的判断.但这样的写法虽然可以实现目前的需求,可如果当税率发生了变化你又得拿出你的程序一步一步的修改.如果if语句的条数发生变化的话我们还必须在代码中添加必要的if判断.这对于程序的维护来说是相当麻烦的.如果我们使用职责链模式的话就可以相当简单了.
先说说我们的设计思想.
我们可以采用职责链完成所得税的计算,由职责链上的一个对象负责计算某一段的所得税.如果符合计算条件,则计算;否则由下一个对象计算.这里我们把核心的代码写出来。
|
以下为引用的内容: using System; namespace CompTax if(income > Minincome && (NextCompTax==null|| income< NextCompTax.Minincome)) public static CompTax GetInstance()
|
然后在页面上去调用。
|
以下为引用的内容: private void button1_Click(object sender, EventArgs e) |
这样我们在GetInstance静态方法中把处理各种的可能连接了起来.如果第一个对象不能满足就用下一个对象来处理.一直直到能到处理为止。
在这里我们可以把cp这个数组从配置文件中读取,这样就实现了动态配置.说到这个我们还有很多地方。
可以用到这样的设计模式.比如我们会员积分功能的时候,当积分到了多少就可以做什么事等等也可以用职责链轻松解决了。
以上所分享的是关于浅谈.net 中的职责链模式的使用,下面是编辑为你推荐的有价值的用户互动:
相关问题:用java代码实现责任链模式的骨干代码
答://----------------先写了个,功能是实现了,有待改进----------- import java.util.ArrayList; import java.util.List; /** * 现有List类型的List对象, * 现在需要将该List对象中a是奇数或者b>100的对象过滤掉, * 请用责任链模式实现此段代码... >>详细
相关问题:责任链设计模式为什么使用抽象类
答:抽象类提高代码复用能力 行为的抽象,是规则,接口,(是特殊的个性) 事物的抽象,是共性,是抽象类(是一般的共性) 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西 >>详细
相关问题:设计模式中,责任链模式和装饰者的异同,以及链条...
答:推荐看一下:电子工业出版 郑阿奇老师的《软件秘笈-设计模式那点事》!里面含有相似设计模式的对比分析和java源码实现,实例通俗易懂,模式分析 静态类图看了一目了然!希望对你有帮助! >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
