仓酷云

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

[学习教程] NET网页编程之C#计划形式-复杂工场形式

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

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

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

x
因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。比来在进修诳言计划形式,由于看完后也必要做实习,以是将实习搬下去,一是加深本人的印象,同时也能够和一样正在进修计划形式同砚一同前进。
复杂工场形式


我们以一个示例来进修复杂工场形式,这个示例一样来历于《诳言计划形式》这本书,人人偶然间也能够往看看,很不错的进修材料。
示例:假定我们要做一个复杂阛阓计费软件,这个体系请求能录进产物的数目与单价和促销形式来盘算生产品的总金额。

计划的软件界面以下:


促销次要包括量以下几种体例:
1,一般免费
2,打8折
3,打5折
4,满300送50

上面入手下手写代码:
起首是”一般免费”,”打折”,”满就送”的三种盘算体例的类
publicabstractclassCashSuper
{
//笼统办法,传进原始代价,前往打折或返利后的代价
publicabstractdoubleAcceptCash(doublemoney);
}

publicclassCashNormal:CashSuper
{
//一般免费的类,以是的前往原始代价
publicoverridedoubleAcceptCash(doublemoney)
{
returnmoney;
}
}

publicclassCashRebate:CashSuper
{
privatedoublemoneyRebate=1;

//打折免费类,进进该类的盘算都有请求打折,以是在机关函数中增加了“扣头”值
publicCashRebate(double_ebate)
{
this.moneyRebate=_ebate;
}

//前往原始“原始代价*扣头”后的代价
publicoverridedoubleAcceptCash(doublemoney)
{
returnmoney*moneyRebate;
}
}

publicclassCashRetrun:CashSuper
{
privatedoublecoditionMoney=0;
privatedoublereturnMoney=0;

//满额返利类,该类用于盘算买满几钱送几钱的体例,_coditionMoney吸收满几的值,_returnMoney吸收前往几的值
publicCashRetrun(double_coditionMoney,double_returnMoney)
{
this.coditionMoney=_coditionMoney;
this.returnMoney=_returnMoney;
}

publicoverridedoubleAcceptCash(doublemoney)
{
if(money>coditionMoney)
{
returnmoney-Math.Floor(money/coditionMoney)*returnMoney;
}
else
{
returnmoney;
}
}
}

接上去是工场类:
publicclassCashFactory
{
publicstaticCashSuperCreateCashSuper(stringcashtype)
{
switch(cashtype)
{
case"一般免费":
returnnewCashNormal();
case"打8折":
returnnewCashRebate(0.8);
case"打5折":
returnnewCashRebate(0.5);
case"满300送50":
returnnewCashRetrun(300,50);
default:
returnnull;
}
}
}

再就是软件中”盘算”这个按钮的点击事务了
privatevoidbutton1_Click(objectsender,EventArgse)
{
doublenumber=Convert.ToDouble(this.textnumber.Text.Trim());
doubleprice=Convert.ToDouble(this.textprice.Text.Trim());
doubletotalprice=number*price;

CashSupercashsuper=CashFactory.CreateCashSuper(this.cashtype.SelectedItem.ToString());
this.label7.Text=totalprice.ToString();
this.label4.Text=cashsuper.AcceptCash(totalprice).ToString();
}

如许,全部功效就使用复杂工场形式来完成了,以下图:


面向工具的编程,并是不类越多越好,类的分别是为了封装,但分类的基本是笼统,具有不异属性和功效的工具的笼统汇合才是类。以是下面”打8折”与”打5折”都是打折类,只必要写一个类,然后将扣头率作为参数传送进类中就行了。不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……
兰色精灵 该用户已被删除
沙发
发表于 2015-1-18 13:15:02 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
板凳
发表于 2015-1-23 17:39:34 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
因胸联盟 该用户已被删除
地板
发表于 2015-1-31 19:04:45 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
深爱那片海 该用户已被删除
5#
发表于 2015-2-19 04:31:16 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
金色的骷髅 该用户已被删除
6#
发表于 2015-3-6 13:04:31 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
简单生活 该用户已被删除
7#
发表于 2015-3-13 02:08:20 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-20 10:04:33 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-11 06:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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