策略模式:
定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户.
可以减少算法与算法之间的耦合。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
abstract class Strategy
{
//算法方法
public abstract void AlgorithmInterface();
}
class ConcreteStrategyA:Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("算法A具体实现");
}
}
class ConcreteStrategyB : Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("算法B具体实现");
}
}
class ConcreteStrategyC : Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("算法C具体实现");
}
}
class Context
{
private readonly Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
//提供一个公共接口,根据具体的策略对象,调用具体的算法
public void ContextInterface()
{
strategy.AlgorithmInterface();
}
}
class Costume
{
static void Main(string[] args)
{
Context context;
context = new Context(new ConcreteStrategyA());
context.ContextInterface();
context = new Context(new ConcreteStrategyB());
context.ContextInterface();
context = new Context(new ConcreteStrategyC());
context.ContextInterface();
}
}
}