仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 584|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之.net 中的职责链形式的利用

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:28:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?职责链形式使多个工具都无机会处置哀求,从而制止哀求的发送者和吸收者之间的耦合干系.将这些工具连成一条链,并沿着这条链传送该哀求,直到有一个对明处置它为止。职责链形式使多个工具都无机会处置哀求,从而制止哀求的发送者和吸收者之间的耦合干系.将这些工具连成一条链,并沿着这条链传送该哀求,直到有一个对明处置它为止。
职责链形式的了局以下图:
.



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判别.这关于程序的保护来讲是相称贫苦的.假如我们利用职责链形式的话就能够相称复杂了.
先说说我们的计划头脑.
我们能够接纳职责链完成所得税的盘算,由职责链上的一个工具卖力盘算某一段的所得税.假如切合盘算前提,则盘算;不然由下一个工具盘算.这里我们把中心的代码写出来。
以下为援用的内容:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceCompTax
{
publicclassCompTax
{
privatedoubleTaxp;
privatedoubleMinincome;
privatestaticdoubleDisc=2000;
privateCompTaxNextCompTax;
publicCompTax(doubleMinincome,doubleTaxp)
{
this.Minincome=Minincome;
this.Taxp=Taxp;
NextCompTax=null;
}
publicdoubleComp(doubleincome)
{
if(income>Minincome&&(NextCompTax==nullincome<NextCompTax.Minincome))
{
return(income-Disc)*Taxp;
}
else
{
returnNextCompTax.Comp(income);
}
}
publicstaticCompTaxGetInstance()
{
CompTax[]cp={
newCompTax(2000,0.05),
newCompTax(2500,0.1),
newCompTax(4000,0.15),
newCompTax(7000,0.2),
newCompTax(22000,0.25),
newCompTax(42000,0.3),
newCompTax(62000,0.35),
newCompTax(82000,0.4),
newCompTax(102000,0.45)
};
CompTaxct=null;
for(inti=0;i<cp.Length-1;i++)
{
if(i==0)
ct=cp;
cp.NextCompTax=cp[i+1];
}
returnct;
}
}
}



然后在页面上往挪用。
以下为援用的内容:
privatevoidbutton1_Click(objectsender,EventArgse)
{
textBox2.Text=CompTax.GetInstance().Comp(double.Parse(textBox1.Text)).ToString();
}


如许我们在GetInstance静态办法中把处置各类的大概毗连了起来.假如第一个工具不克不及满意就用下一个工具来处置.一向直到能各处理为止。
在这里我们能够把cp这个数组从设置文件中读取,如许就完成了静态设置.说到这个我们另有良多中央。
能够用到如许的计划形式.好比我们会员积分功效的时分,当积分到了几就能够做甚么事等等也能够用职责链轻松办理了。
其实Java之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是Java的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。
admin 该用户已被删除
沙发
发表于 2015-1-19 13:57:07 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
小妖女 该用户已被删除
板凳
发表于 2015-1-25 07:13:50 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
海妖 该用户已被删除
地板
发表于 2015-2-2 17:09:58 | 只看该作者
PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
谁可相欹 该用户已被删除
5#
发表于 2015-2-8 02:33:30 | 只看该作者
那么,ASP.Net有哪些改进呢?
若相依 该用户已被删除
6#
发表于 2015-2-24 02:24:38 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-7 10:32:54 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
小女巫 该用户已被删除
8#
发表于 2015-3-15 00:05:17 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
再现理想 该用户已被删除
9#
发表于 2015-3-21 15:43:27 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 23:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表