C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)
2012-03-23 12:05
603 查看
(根据MSDN WebCast相关课程整理)
这是一种应用非常广泛的行为型设计模式。
对象可能经常需要用多种不同的算法,但是如果变化频繁,会将类型变得很脆弱。
如上图所示,对于一个立方休,取不同的截面,那么它的面积计算方法就会不同,需要采用不同的算法。
那么,如何在运行时,不更改方法而动态的设计算法呢?将算法与对象解耦,实现动态加载。
C#中动态可加载以支持运行时变化的技术手段有:
虚函数,接口,委托,反射
GoF:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换,该模式使得算法可以独立于使用它的客户系统的变化。
一个没有采用策略模式的示例:
采用策略模式后,实现了算法策略与具体对象的分离,这样在同一个对象中,传入不同的策略对象,就可以实现不同的算法,从而达到动态改变算法的目的。
<完>
这是一种应用非常广泛的行为型设计模式。
对象可能经常需要用多种不同的算法,但是如果变化频繁,会将类型变得很脆弱。
如上图所示,对于一个立方休,取不同的截面,那么它的面积计算方法就会不同,需要采用不同的算法。
那么,如何在运行时,不更改方法而动态的设计算法呢?将算法与对象解耦,实现动态加载。
C#中动态可加载以支持运行时变化的技术手段有:
虚函数,接口,委托,反射
GoF:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换,该模式使得算法可以独立于使用它的客户系统的变化。
一个没有采用策略模式的示例:
采用策略模式后,实现了算法策略与具体对象的分离,这样在同一个对象中,传入不同的策略对象,就可以实现不同的算法,从而达到动态改变算法的目的。
<完>
相关文章推荐
- [导入]C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式.zip(8.00 MB)
- C#面向对象设计模式纵横谈 学习笔记22 State模式(行为型模式)
- C#面向对象模式设计第十八讲:Iterator 迭代器模式(行为型模式)
- [导入]C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式.zip(10.41 MB)
- C#面向对象模式设计第二十一讲:Memento 备忘录模式(行为型模式)
- [导入]C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式.zip(6.24 MB)
- [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)
- [.net 面向对象程序设计深入](26)实战设计模式——策略模式 Strategy (行为型)
- [导入]C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式.zip(8.18 MB)
- [导入]C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式.zip(7.56 MB)
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- [导入]C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式).zip(9.54 MB)
- [导入]C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式.zip(8.04 MB)
- C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)
- [导入]C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式.zip(8.75 MB)
- C#面向对象模式设计第十四讲:Template Method 模板模式(行为型模式)
- [导入]C#面向对象设计模式纵横谈(16):(行为型模式) Interpreter 解释器模式.zip(9.14 MB)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- [导入]C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式).zip(9.01 MB)