首页 / 设计模式 / C#-设计模式-策略模式
C#-设计模式-策略模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-设计模式-策略模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1275字,纯文字阅读大概需要2分钟。
内容图文
![C#-设计模式-策略模式](/upload/InfoBanner/zyjiaocheng/837/e496ca6367334b95bb72cf0cc3fd065e.jpg)
1.定义
将会经常改变的算法,封装在接口中,在算法更改时,只需要为接口添加新的实现,而不需要修改原有的算法。
2.代码实现
public interface Calculatable { decimal GetResult(decimal num1, decimal num2); } public class Add : Calculatable { public decimal GetResult(decimal num1, decimal num2) { return num1 + num2; } } public class Reduce : Calculatable { public decimal GetResult(decimal num1, decimal num2) { return num1 - num2; } } public class Multiplication : Calculatable { public decimal GetResult(decimal num1, decimal num2) { return num1 * num2; } } public class Division : Calculatable { public decimal GetResult(decimal num1, decimal num2) { if (num2 == 0) return 0; return num1 / num2; } }
由一个计算接口,派生出4个运算类,分别是加减乘除,调用的时候;
Calculatable cal = new Add(); cal.GetResult(1, 2);
当需要更换算法的时候只需要将接口的实现换成另一个算法类即可,如果使用IOC,还可以将实现放到配置文件中,起到动态更换算法的功能。
3.特点
优点:将算法的变化进行抽离和封装,因此当算法更换时,不需要更改代码,只需要对接口进行新的实现就行了
缺点:如果算法比较多的时候,策略类(实现策略接口的类)就会比较多,而且比较坑爹的是,每一个策略类中只有一个public方法,比较浪费
如果优化的话,可以使用抽象类,将变化的算法设为抽象方法,或虚方法,这样让子类对该方法进行实现即可,同样可以实现该需求,而且代码重用性应该会更好
内容总结
以上是互联网集市为您收集整理的C#-设计模式-策略模式全部内容,希望文章能够帮你解决C#-设计模式-策略模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。