C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)

(根据MSDN WebCast相关课程整理)

这是一种应用非常广泛的行为型设计模式。

对象可能经常需要用多种不同的算法,但是如果变化频繁,会将类型变得很脆弱。

C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)_第1张图片

如上图所示,对于一个立方休,取不同的截面,那么它的面积计算方法就会不同,需要采用不同的算法。

那么,如何在运行时,不更改方法而动态的设计算法呢?将算法与对象解耦,实现动态加载。

C#中动态可加载以支持运行时变化的技术手段有:

虚函数,接口,委托,反射

GoF:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换,该模式使得算法可以独立于使用它的客户系统的变化。

一个没有采用策略模式的示例:

C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)_第2张图片

C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)_第3张图片

采用策略模式后,实现了算法策略与具体对象的分离,这样在同一个对象中,传入不同的策略对象,就可以实现不同的算法,从而达到动态改变算法的目的。

C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)_第4张图片

<完>

你可能感兴趣的:(C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式))