刚把书读得差不多了,到最后总结的时候,发现还是有很多设计模式的思想和具体操作不太记得了。
故此还是用点笨办法,把一些比较重要又没什么印象的手敲一遍好了。
第一节,哈吉马路哟。
uml图详解
uml里的关系,不太好描述,这里写几个我比较容易搞混的。
(1)关联—–实线,依赖—–虚线
(2)聚合—–实线,组合—–虚线
(3)继承—–实线,实线接口—–虚线
唔姆,好像也就这些,写出来感觉就没这么难记了。
策略模式
这里举了超市搞活动的例子,优惠的方式很多,可能打折,返券,或者是积分。
我感觉简单工厂的确可以实现,但对比策略模式,确实在每次更改上,不仅要加算法,还要对总工厂有较大改动,先看最开始的策略模式结构图
具体到超市活动,其实变化不大。
每一个优惠方式都定义成一个独立的子类,根据需求,实例化。
鉴于减少客户端的判断压力,利用简单工厂和策略可以把switch都搬入Strategy中。
上面这点很重要,统揽全书,我感觉设计模式要做的就是每一个类做好自己的一件事,尽量不暴露给别人,减少对其他类的依赖,达成所谓的低耦合高内聚
总之写写看,不能刚看看。
class CashContext{
CashSuper cs=null;
public CashContext(string type)
{
switch (type)
{
case "正常收费":
cs=new CashNormal();
break;
case "满300减100":
cs=new CashReturn("300","100");
break;
case "打8折":
cs=new CashRebate("0.8");
break;
default:
break;
}
//反射写法
//string 命名空间.类名="命名空间."+type;
//cs=(Cashsuper)Assembly.Load("当前程序集名").CreateInstance("命名空间.类名");
}
public double GetRes(double money)
{
return cs.acceptCash(money);
}
}
//客户端
double total=0.0d;
private void btn(object sender,EventArgs e)
{
CashContext csuper =new CashContext(cbxType.SelectedItem.ToString());
double totalPrice=0d;
totalPrice=csuper.GetRes(money)*xx;//xx不重要的东西
total+=totalPrice;
//...
}
总之,还是先贴个反射在这里,感觉挺好用的,像是每个类都被当成了单例,随叫随到。
今天的任务结束力,希望明天的我能继续。
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
ConneRの博客
本文地址: 大话设计模式笔记(1)—uml图及策略模式
本文地址: 大话设计模式笔记(1)—uml图及策略模式
您必须 登录 才能发表评论