概述
策略模式也是一种行为型的设计模式,它主要是定义一系列的算法封装起来,然后可以通过策略进行互换,提高代码的复用性和可维护性质。其主要实现分为,策略接口,算法类,还有策略类,通过扩展算法类来扩展算法,调用策略类来传入不同的算法,实现对应的接口方法。
举例:小明要去外地,有汽车和火车两种方式,小明该如何选择,请设计实现。
策略模式
internal class Program
{
private static void Main(string[] args)
{
IVehicle car = new Car();
IVehicle train = new Train();
//使用汽车
Strategy S_car = new Strategy(car);
S_car.TakeTime("2小时");
//使用火车
Strategy S_train = new Strategy(train);
S_train.TakeTime("1小时");
}
public interface IVehicle//交通工具接口
{
void Time(string _time);
}
public class Car : IVehicle//汽车
{
public void Time(string _time)
{
Console.WriteLine($"使用汽车花费{_time}时间");
}
}
public class Train : IVehicle//火车
{
public void Time(string _time)
{
Console.WriteLine($"使用火车花费{_time}时间");
}
}
public class Strategy//策略类
{
private IVehicle vehicle;
public Strategy(IVehicle vehicle)
{
this.vehicle = vehicle;
}
public void TakeTime(string time)
{
vehicle.Time(time);
}
}
}
输出结果
使用汽车花费2小时时间
使用火车花费1小时时间