五.策略模式
策略模式:
与工厂不同的是,工厂是:
工厂类接受参数,实例化具体的类,返回类
策略模式是:
接受具体的实例化类,仅将方法赋予策略类
策略模式类:
class CashContext
{
private CashSuper cs;
public CashContext(CashSuper csuper)
{
this.cs = csuper;
}
public double GetResult(double monty)
{
return cs.acceptCash(monty);
}
}
抽象类和实现类:
abstract class CashSuper
{
public abstract double acceptCash(double money);
}
//正常收费
class CashNormal : CashSuper
{
public override double acceptCash(double money)
{
return money;
}
}
//打折收费类
class CashRebhate : CashSuper
{
private double moneyRebate = 1d;
public CashRebhate(string moneyRebate)
{
this.moneyRebate = double.Parse(moneyRebate );
}
public override double acceptCash(double money)
{
return money * moneyRebate;
}
}
调用策略模式:
private voidbutton1_Click(object sender, EventArgs e)
{
CashContext cc =null;
switch (comboBox1.Text)
{
case "正常收费":
cc= new CashContext(new CashNormal());
break;
。。。。。。。。
}
double totals =Convert.ToDouble(textBox1.Text) * Convert.ToDouble(textBox2.Text);
totals =cc.GetResult(totals);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库