知识大全 浅谈.net 中的职责链模式的使用
Posted 职责
篇首语:三十年河东,三十年河西,莫欺少年穷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈.net 中的职责链模式的使用相关的知识,希望对你有一定的参考价值。
职责链模式使多个对象都有机会处理请求 从而避免请求的发送者和接收者之间的耦合关系 将这些对象连成一条链 并沿着这条链传递该请求 直到有一个对明处理它为止
职责链模式的结果如下图
Handler:定义一个处理请求的接口并实现后继链
ConcreteHandler:处理负责的请求并可访问后继者 如果可处理该请求 则处理之 否则将该请求转发给后继者
Client:向链上的具体处理者对象提交请求
在这里先用一个简单的例子计算所得税来说明一下职责链模式在应用中的作用
先简要的说一下计算所得税的方法:
以成都为例:
计算金额 应纳税额 个税率 元/月以内免税 元/月以上至 元/月 不超过 元 % 元/月以上至 元/月 元至 元 % 元/月以上至 元/月 元至 元 % 元/月以上至 元/月 元至 元 % 元/月以上至 元/月 元至 元 % 元/月以上至 元/月 元至 元 % 元/月以上至 元/月 元至 元 % 元/月以上至 元/月 元至 元 % 元/月以上 元以上 %
(工资 )*相应工资范围的个税率
当你看到这样的一个计算方式之后你心里是不是已经有了自己的想法了?写一系列的if语句来一条条的判断 但这样的写法虽然可以实现目前的需求 可如果当税率发生了变化你又得拿出你的程序一步一步的修改 如果if语句的条数发生变化的话我们还必须在代码中添加必要的if判断 这对于程序的维护来说是相当麻烦的 如果我们使用职责链模式的话就可以相当简单了
先说说我们的设计思想
我们可以采用职责链完成所得税的计算 由职责链上的一个对象负责计算某一段的所得税 如果符合计算条件 则计算;否则由下一个对象计算 这里我们把核心的代码写出来
using System;using System Collections Generic;using System Linq;using System Text;
namespace CompTax public class CompTax private double Taxp; private double Minine; private static double Disc= ; private CompTax NextCompTax; public CompTax(double Minine double Taxp) this Minine = Minine; this Taxp = Taxp; NextCompTax = null; public double Comp(double ine)
if(ine > Minine && (NextCompTax==null|| ine< NextCompTax Minine)) return (ine Disc) * Taxp; else return NextCompTax Comp(ine);
public static CompTax GetInstance() CompTax[] cp = new CompTax( ) new CompTax( ) new CompTax( ) new CompTax( ) new CompTax( ) new CompTax( ) new CompTax( ) new CompTax( ) new CompTax( ) ; CompTax ct=null; for (int i = ; i < cp Length ; i++) if (i == ) ct = cp[i]; cp[i] NextCompTax = cp[i + ]; return ct;
然后在页面上去调用
private void button _Click(object sender EventArgs e) textBox Text = CompTax GetInstance() Comp(double Parse(textBox Text)) ToString(); 这样我们在GetInstance静态方法中把处理各种的可能连接了起来 如果第一个对象不能满足就用下一个对象来处理 一直直到能到处理为止
在这里我们可以把cp这个数组从配置文件中读取 这样就实现了动态配置 说到这个我们还有很多地方
cha138/Article/program/net/201311/11516相关参考
浅谈.Net中的对象相等 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Net中对象相等比较是看
浅谈.NET里的MTS 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!事务处理模式是为参与事务处理的
浅谈VB.NET中的跨进程消息钩子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们都知道在V
浅谈ADO.NET中的五个主要对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ADONET对
知识大全 浅谈ASP.NET 4.0 SEO增强中的UrlRouting
浅谈ASP.NET4.0SEO增强中的UrlRouting 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 浅谈ASP.NET MVC中的FluentHtml与连续接口
浅谈ASP.NETMVC中的FluentHtml与连续接口 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 浅谈基于URL的权限控制ASP.NET MVC中的实现
浅谈基于URL的权限控制ASP.NETMVC中的实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
.NET框架中的Factory模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Factory
.NET框架中的Factory模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Factory
ASP.NET中的session存储模式运用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在中