策略模式
策略模式是将同种类变化抽象为一个策略接口, 之后派生出多种实现的一个模式
UMLClassCode
interface IStrategy{
object GetResult();
}
class AStrategy{
+object GetResult();
}
class BStrategy{
+object GetResult();
}
class Content{
+IStrategy strategy
+Content(IStategy)
+object GetResult();
}
IStrategy <|.. AStrategy
IStrategy <|.. BStrategy
IStrategy <--o Content
Code
public static void Main()
{
Content content = new Content(new AStrategy());
Console.WriteLine(content.GetResult());
Console.ReadKey();
}
public interface IStrategy
{
object GetResult();
}
public class AStrategy : IStrategy
{
public object GetResult()
{
return "inA";
}
}
public class BStrategy : IStrategy
{
public object GetResult()
{
return "inB";
}
}
public class Content
{
public IStrategy strategy;
public Content(IStrategy stategy)
{
this.strategy = stategy;
}
public object GetResult()
{
return strategy.GetResult();
}
}
掺杂了简单工厂的策略模式
通过简单工厂封装生成策略类的过程, 进一步解耦合
只将Content
类的构造函数变化一下.
public Content(StrategyType type)
{
switch (type)
{
case StrategyType.A:
strategy = new AStrategy();
break;
case StrategyType.B:
strategy = new BStrategy();
break;
default:
break;
}
}
当然, 要添加一个enum
public enum StrategyType
{
A,
B
}