|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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),我一同学说,你应该早就有作品啦。我惶惶然…… |
|