再看设计模式之策略模式

来源:互联网 发布:淘宝号出售批发 编辑:程序博客网 时间:2024/06/11 08:13

看的有些慢,一周就复习了一个设计模式,总结一下。

1.      策略模式是定义了一系列算法,并将每一个算法封装起来,而且使它们可以相互替换,让算法独立于使用它的用户而独立变                化。

2.      共有三个角色:(1)Context(应用场景):需要使用ConcreteStrategy提供的算法;内部维护一个Strategy的实例;负责动态                                                                     地设置运行时Strategy具体的实现算法;跟Strategy之间的交互和数据传递。

                                  (2)Strategy(抽象策略类):定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,Context                                                                         使用这个接口调用不同的算法,一般使用接口或抽象类实现。

                                  (3)ConcreteStrategy(具体策略类):实现了Strategy定义的接口,提供具体的算法实现。


Strategy类

<pre name="code" class="csharp">Abstract  class  Strategy{   Public abstract void AlgorithmInterface();}
ConcreteStrategy类
Class ConcreteStrategyA:Strategy{   Public override void AlgorithmInterface()   {       Console.WriteLine(“算法A实现”);   }}

算法B,C略


Context类

Class Context{  Strategy strategy  Public Context(Strategy strategy)  {    this.strategy=strategy;  }Public void ContextInterface()  {    Strategy. AlgorithmInterface()  }}

3.  优点:策略模式提供管理相关算法族的方法;提供了可以替代继承的一种方法;可以使程序避免使用多重选择语句。

     缺点:要求客户端必须知道所有的策略类;而且产生了很多策略类。

4.适用情景:如果一个应用中有很多类,这些类的区别主要是行为,则可以使用策略模式动态的在多个行为中选择其一;一个系统需     要多个算法中      动态选择其一,可以使用策略模式。



0 0