导航

(一)透过.Net框架找设计模式系列:策略模式

Posted on 2011-07-01 11:54  chicwoo  阅读(213)  评论(0)    收藏  举报
ArrayList类中其中有一个sort排序方法
定义如下
public virtual void Sort(IComparer comparer)
其中方法int Compare(object x, object y)    
摘要:比较两个对象并返回一个值,指示一个对象是小于、等于还是大于另一个对象。
参数:x: 要比较的第一个对象。y: 要比较的第二个对象。
返回值:值 条件 小于零 x 小于 y。 零 x 等于 y。 大于零 x 大于 y。

由此IComparer 就是策略模式中策略抽象类,ArrayList乃为Context(引用场景)

附录

UML图,策略模式分属于GOF行为模式

Context(应用场景): 
  • 需要使用ConcreteStrategy提供的算法。     
  • 内部维护一个Strategy的实例。        
  • 负责动态设置运行时Strategy具体的实现算法。   
  • 负责跟Strategy之间的交互和数据传递。
Strategy(抽象策略类):   
 定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,Context使用这个接口调用不同的算法,一般使用接口或抽象类实现。
ConcreteStrategy(具体策略类):
实现了Strategy定义的接口,提供具体的算法实现。