前言:
策略模式就是用于实现某个功能但是可以有不同选择的情况,抽象策略类定义抽象方法,具体策略类定义具体方法,环境类维持对抽象策略对象的引用,并且通过注入的方式来注入不同的具体策略对象,然后在环境类中调用具体策略类中的方法
public abstract class VisionAlgorith//抽象策略类
{
public abstract void Handle();
}
class algorith1 : VisionAlgorith//具体策略类
{
public override void Handle()
{
Console.WriteLine("我是算法1");
}
}
class algorith2 : VisionAlgorith
{
public override void Handle()
{
Console.WriteLine("我是算法2");
}
}
class Contex//环境类
{
VisionAlgorith _VisionAlgorith;
public void SetAlgorithm(VisionAlgorith visionAlgorith)
{
this._VisionAlgorith = visionAlgorith;
}
public void Detect()
{
_VisionAlgorith.Handle();
}
}
调用:
Contex contex = new Contex();
VisionAlgorith algorith = new algorith1();
contex.SetAlgorithm(algorith);
contex.Detect();
输出:
我是算法1