浅析.net策略模式
网络编程 2021-07-04 22:41www.168986.cn编程入门
这篇文章主要介绍了浅析.策略模式,需要的朋友可以参考下
对于策略模式的理解当一个业务有多种需求时候,在某个时候需要使用不同的方式来计算结果。这时候不同的方式可以理解为不同的策略来解决同样的问题。 例如商场收银系统计算价格,1正常计算 2商品打折计算,3满300减100等方式。就可以按三种策略来处理需求。
简单的说策略模式就是用来封装算法的,但在实践中,我们发现可以用他来封装几乎任何类型的规则,只要在分析过程中听到需要在不同的时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
/// <summary>
/// 策略模式
/// </summary>
public class TacticsModel
{
public string type { get; set; }
public virtual string GetResult()
{
return "";
}
}
public class Normal:TacticsModel
{
public override string GetResult()
{
return "正常计算价格";
}
}
public class Discount : TacticsModel
{
public override string GetResult()
{
return "按打折计算价格";
}
}
public class Preferential : TacticsModel
{
public override string GetResult()
{
return "满300减100活动";
}
}
public class CashContext
{
TacticsModel tm = null;
public CashContext(string type)
{
switch (type)
{
case "1":
tm = new Normal();
break;
case "2":
tm = new Discount();
break;
case "3":
tm = new Preferential();
break;
default:
break;
}
}
public string GetResult()
{
return tm.GetResult();
}
}
}
这种方式和简单工厂方式差不多,只是有稍微区别。 简单工厂模式需要暴漏给客户端两个类,策略模式和工厂模式的简单结合只暴漏了一个CashContext类
客户端调用代码
代码如下:
Console.WriteLine("请计算类型1正常,2打折,3优惠");
string type = Console.ReadLine();
CashContext = new CashContext(type);
Console.WriteLine(.GetResult());
结果
其中还是使用了swich ,也就是就是说增加一种需求就有更改swith语句,很是不爽,不过任何需求的变更都是需要成本的。
只是成本的高低是有区别的。这个地方用反射技术会有更好的效果。后续会补充。
上一篇:浅谈c#设计模式之单一原则
下一篇:浅析.net简单工厂模式
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程