手机版

分析 网络策略模式

时间:2021-10-16 来源:互联网 编辑:宝哥软件园 浏览:

对策略模式的理解:当一个业务有多个需求时,需要使用不同的方法来计算某个时间的结果。这时,不同的方式可以理解为解决同一问题的不同策略。比如商场收银系统计算价格,1:正常计算,2:商品折扣计算,3:300以上减100等。有三种策略来处理需求。

简单来说:策略模式用于封装算法,但在实践中,我们发现它几乎可以封装任何类型的规则。只要我们听说在分析过程中不同的时间需要应用不同的业务规则,我们就可以考虑使用策略模式来应对这种变化的可能性。

复制代码如下:使用系统;使用系统。集合。通用;使用系统。Linq使用系统。文字;使用系统。线程化。任务;命名空间设计模型{///summary////policy mode////summary公共类战术模型{ public string type { get设置;}公共虚拟字符串GetResult() {返回“”;}} public classnormal :战术模型{ public override string get result(){ return ' normal computed price ';}}公共类折扣:战术模型{ public override string getresult(){ return '按折扣计算价格';}}公开课特惠:战术模型{公开课override string get result(){ return ' over 300减100活动';} }公共类cash context { tactics model TM=null;public CashContext(字符串类型){ switch(类型){ case ' 1 ' : TM=new Normal();打破;案例“2”: TM=新折扣();打破;案例‘3’: TM=new preference();打破;default: break} }公共字符串GetResult() { return tm。GetResult();} }}

这种方法类似于简单的工厂方法,只有细微的差别。工厂方法模式需要向客户端公开两个类。策略模式和工厂模式的简单组合只公开了一个CashContext类。

客户端调用代码:

复制代码如下:控制台。WriteLine('请计算类型1正常,2打折,3优惠:');字符串类型=控制台。ReadLine();CashContext cc=新的CashContext(类型);控制台。WriteLine(cc。GetResult());结果:

Swich仍然在使用,也就是说如果增加一个需求,swith语句就会改变,这是非常不愉快的,但是任何需求的改变都是要付出代价的。

只是成本不同。这个地方用反射技术会有更好的效果。稍后会补充。

版权声明:分析 网络策略模式是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。