C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)
2012-03-22 17:21
573 查看
(根据MSDN WebCast相关课程整理)
对象拥有不同的状态,往往会行使不同的行为。如图:
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720378904.jpg)
通常,我们可以采用switch…case语句来解决问题,但是,如果这种状态变化比较频繁,那么,这必须导致对象与对象之间的紧耦合。当然,我们不要为使用设计模式而刻意的采用设计模式,因为一些简
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720433750.jpg)
单案例下,采用模式可能反而会使设计更加复杂化。我们建议的项目初期不要刻意的应用模式,而是根据需要,找到变化点,渐进的重构出设计模式。
没有采用设计模式时的情况:
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720472864.jpg)
当文档增加一种新的状态,如Printing时,由于紧耦合的存在,将需要同时破坏原枚举类型和Document类两个对象。
采用State模式的情况:
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720569332.jpg)
在这种模式下,我们只需要增加一个继承自StatedDocument的PrintingDocument类,在调用时给Document对象在statedDocument属性赋值就可以啦。同时,我们还可以在StatedDocument类中预计定义到状态的切换。
<完>
对象拥有不同的状态,往往会行使不同的行为。如图:
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720378904.jpg)
通常,我们可以采用switch…case语句来解决问题,但是,如果这种状态变化比较频繁,那么,这必须导致对象与对象之间的紧耦合。当然,我们不要为使用设计模式而刻意的采用设计模式,因为一些简
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720433750.jpg)
单案例下,采用模式可能反而会使设计更加复杂化。我们建议的项目初期不要刻意的应用模式,而是根据需要,找到变化点,渐进的重构出设计模式。
没有采用设计模式时的情况:
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720472864.jpg)
当文档增加一种新的状态,如Printing时,由于紧耦合的存在,将需要同时破坏原枚举类型和Document类两个对象。
采用State模式的情况:
![](http://images.cnblogs.com/cnblogs_com/luckeryin/201203/201203221720569332.jpg)
在这种模式下,我们只需要增加一个继承自StatedDocument的PrintingDocument类,在调用时给Document对象在statedDocument属性赋值就可以啦。同时,我们还可以在StatedDocument类中预计定义到状态的切换。
<完>
相关文章推荐
- [导入]C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式.zip(6.24 MB)
- C#面向对象设计模式纵横谈 学习笔记22 State模式(行为型模式)
- 设计模式二十二:state(状态模式)——对象行为型模式
- 设计模式 ( 十七) 状态模式State(对象行为型)
- C#面向对象模式设计第二十一讲:Memento 备忘录模式(行为型模式)
- 设计模式 ( 十七) 状态模式State(对象行为型)
- [导入]C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式.zip(10.41 MB)
- [导入]C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式.zip(8.00 MB)
- 设计模式 ( 十七) 状态模式State(对象行为型)
- 设计模式 之 STATE(状态)实例 —对象行为型模式
- 设计模式 ( 十七) 状态模式State(对象行为型)
- [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)
- 设计模式二十一:state(状态模式)——对象行为型模式
- State状态设计模式(对象行为型)
- [导入]C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式.zip(8.18 MB)
- C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)
- C#面向对象模式设计第十八讲:Iterator 迭代器模式(行为型模式)
- [导入]C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式.zip(7.56 MB)
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- 设计模式 ( 十七) 状态模式State(对象行为型)