C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)

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

对象拥有不同的状态,往往会行使不同的行为。如图:

C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)_第1张图片

通常,我们可以采用switch…case语句来解决问题,但是,如果这种状态变化比较频繁,那么,这必须导致对象与对象之间的紧耦合。当然,我们不要为使用设计模式而刻意的采用设计模式,因为一些简

C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)_第2张图片

单案例下,采用模式可能反而会使设计更加复杂化。我们建议的项目初期不要刻意的应用模式,而是根据需要,找到变化点,渐进的重构出设计模式。

没有采用设计模式时的情况:

C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)_第3张图片

当文档增加一种新的状态,如Printing时,由于紧耦合的存在,将需要同时破坏原枚举类型和Document类两个对象。

采用State模式的情况:

C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)_第4张图片

在这种模式下,我们只需要增加一个继承自StatedDocument的PrintingDocument类,在调用时给Document对象在statedDocument属性赋值就可以啦。同时,我们还可以在StatedDocument类中预计定义到状态的切换。

<完>

你可能感兴趣的:(C#面向对象模式设计第二十二讲:State 状态模式(行为型模式))