状态模式的通用结构-清华大学计算机考研经验贴.

时间:2024-07-15 10:06:28
【文件属性】:

文件名称:状态模式的通用结构-清华大学计算机考研经验贴.

文件大小:8.5MB

文件格式:PDF

更新时间:2024-07-15 10:06:28

javasc

16.2 状态模式的定义 通过电灯的例子,相信我们对于状态模式已经有了一定程度的了解。现在回头来看 GoF 中 对状态模式的定义: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 我们以逗号分割,把这句话分为两部分来看。第一部分的意思是将状态封装成独立的类,并 将请求委托给当前的状态对象,当对象的内部状态改变时,会带来不同的行为变化。电灯的例子 足以说明这一点,在 off 和 on 这两种不同的状态下,我们点击同一个按钮,得到的行为反馈是截 然不同的。 第二部分是从客户的角度来看,我们使用的对象,在不同的状态下具有截然不同的行为,这 个对象看起来是从不同的类中实例化而来的,实际上这是使用了委托的效果。 16.3 状态模式的通用结构 在前面的电灯例子中,我们完成了一个状态模式程序的编写。首先定义了 Light 类,Light 类在这里也被称为上下文(Context)。随后在 Light 的构造函数中,我们要创建每一个状态类的 实例对象,Context 将持有这些状态对象的引用,以便把请求委托给状态对象。用户的请求,即 点击 button 的动作也是实现在 Context 中的,代码如下: var Light = function(){ this.offLightState = new OffLightState( this ); // 持有状态对象的引用 this.weakLightState = new WeakLightState( this ); this.strongLightState = new StrongLightState( this ); this.superStrongLightState = new SuperStrongLightState( this ); this.button = null; }; Light.prototype.init = function(){ var button = document.createElement( 'button' ), 图灵社区会员 balabala233 专享 尊重版权


网友评论