(根据MSDN WebCast相关课程整理)
这是一种应用非常广泛的行为型设计模式。
对象可能经常需要用多种不同的算法,但是如果变化频繁,会将类型变得很脆弱。
如上图所示,对于一个立方休,取不同的截面,那么它的面积计算方法就会不同,需要采用不同的算法。
那么,如何在运行时,不更改方法而动态的设计算法呢?将算法与对象解耦,实现动态加载。
C#中动态可加载以支持运行时变化的技术手段有:
虚函数,接口,委托,反射
GoF:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换,该模式使得算法可以独立于使用它的客户系统的变化。
一个没有采用策略模式的示例:
采用策略模式后,实现了算法策略与具体对象的分离,这样在同一个对象中,传入不同的策略对象,就可以实现不同的算法,从而达到动态改变算法的目的。
<完>
※※※※※※※※※※※※※※--我的程序人生--※※※※※※※※※※※※※※