策略模式

这段时间研究provider模式,顺便研究了策略模式,发现策略模式也是个比较简单的模式。简单记一下。

最简单的策略模式是涉及到四个类,调用者类,被调用者父类,两个或者两个以上继承于被调用者父类的子类。调用者类里面包含被调用者父类的引用,在构造函数里面加个被调用者类的参数。

用代码来表示更明白:

父类,定义抽象函数:

public class Strategy

{

public abstract string write()

{

//return some string;

}

}

---------------------------

多个子类,重载父类里面的抽象函数:

public class StrategyA:Strategy

{

public override string write()

{

return "I am A";//具体实现1

}

}

public class StrategyB:Strategy

{

public override string write()

{

return "I am B";//具体实现2

}

}

----------------------

调用父类策略类

public class Client

{

private Strategy _strategy;

public void Client(Strategy mystrategy)

{

_strategy=mystrategy;

}

//调用策略类里面的方法

public string DoSomething()

{

_strategy.write();

}

}

-----------------------

其他的类再来调用 client类,选择具体的策略

public class anthor

{

public string doA()

{

client c=new client(StrategyA  a);

return c.doSomething();//这里因为是调用StrategyA,返回的是 I am A;

}

}

===================================

其他:

组合,聚合,继承都可以实现代码复用。组合,聚合用多了更好用。

重载以及多态带给了子类更多的灵活性。

原文地址:https://www.cnblogs.com/asdio/p/1379341.html