策略模式简介
策略模式在设计模式中属于对象行为型模式,它的意图是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而变化。
策略模式的图解如下所示:
示例
本文通过一个简单的例子来向大家介绍C#如何使用策略模式。本文以出行这个行为举例,出行我们可以使用多种方式,比如自己开车、乘坐公交、骑自行车等。
1、定义策略接口
public interface ITravelStrategy
{
public void Print();
}
我们定义了一个出行策略接口,只定义了一个Print方法。
2、实现具体策略类
public class Car : ITravelStrategy
{
public void Print()
{
Console.WriteLine("乘坐汽车出行\r\n");
}
}
public class Bike : ITravelStrategy
{
public void Print()
{
Console.WriteLine("骑自行车出行\r\n");
}
}
public class Bus : ITravelStrategy
{
public void Print()
{
Console.WriteLine("乘坐公交出行\r\n");
}
}
定义了三个具体策略类分别为Car、Bike与Bus,都实现了ITravelStrategy
接口,它们的实现是不同的。
3、实现上下文类
public class TravelContext
{
private ITravelStrategy _strategy;
public TravelContext(ITravelStrategy strategy)
{
_strategy = strategy;
}
public void SetStrategy(ITravelStrategy strategy)
{
_strategy = strategy;
}
public void ExecuteStrategy()
{
_strategy.Print();
}
}
该上下文类维护一个对ITravelStrategy
对象的引用,可以在构造函数中为其指定一个具体的策略类,它还提供了SetStrategy方法来改变策略,ExecuteStrategy方法来执行策略。
4、使用策略模式
static void Main()
{
// 创建上下文并设置初始策略
TravelContext travelContext = new TravelContext(new Car());
travelContext.ExecuteStrategy();
// 切换策略为坐公交出行
travelContext.SetStrategy(new Bus());
travelContext.ExecuteStrategy();
// 切换策略为骑自行车出行
travelContext.SetStrategy(new Bike());
travelContext.ExecuteStrategy();
Console.ReadLine();
}
运行结果:
该示例的图解如下所示:
总结
使用策略模式的步骤总结如下:
希望对你有所帮助。
Ref
1、《Head First 设计模式(中文版)》
2、《大话设计模式》
3、《设计模式:可复用面向对象软件的基础》
4、YouTube Strategy Pattern – Design Patterns in C#
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容