8.js模式-状态模式

1. 状态模式

var offLightState = function(light){

this.light = light;

}

  • offLightState.prototype.buttonWasPressed = function(){

console.log(‘弱光‘);

this.light.setState(this.weakLightState);

}

var weakLightState = function(light){

this.light = light;

}

weakLightState.prototype.buttonWasPressed = function(){

console.log(‘弱光‘);

this.light.setState(this.strongLightState);

}

var strongLightState = function(light){

this.light = light;

}

strongLightState.prototype.buttonWasPressed = function(){

console.log(‘弱光‘);

this.light.setState(this.offLightState);

}

var light = function(){

this.offLightState = new offLightState(this);

this.weakLightState = new weakLightState(this);

this.strongLightState = new strongLightState(this);

this.button = null;

}

light.prototype.init = function(){

this.currentState = this.offLightState;

this.button.onclick = function(){

this.currentState.buttonWasPressed();

}

}

light.prototype.setState = function(state){

this.currentState = state;

}

var light = new light();

light.init();

时间: 2024-10-13 15:16:01

8.js模式-状态模式的相关文章

Java设计模式(十) 备忘录模式 状态模式

(十九)备忘录模式 备忘录模式目的是保存一个对象的某个状态,在适当的时候恢复这个对象. class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } class Storage

设计模式—策略模式 状态模式

一 策略模式 应用场景 1. 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为. 2. 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现. 3. 对客户隐藏具体策略(算法)的实现细节,彼此完全独立. 优点 1. 策略模式提供了管理相关的算法族的办法.策略类的等级结构定义了一个算法或行为族.恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码. 2. 策略模式提供了可以替换继承关系的办法.继承可以处理多种算法或行为.如

java设计模式--行为型模式--状态模式

什么是行为型模式,小编觉得就是对行为的一种描述啦,一种对某种行为模型的定义. 状态模式: 1 状态模式 2 概述 3 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 4 5 6 适用性 7 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为. 8 9 2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态. 10 这个状态通常用一个或多个枚举常量表示. 11 通常,有多个操作包含这一相同的条件结构.

第22章 行为型模式—状态模式

1. 状态模式(State Pattern)的定义 (1)定义:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. ①状态和行为,它们的关系可以描述为“状态决定行为” ②因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变.看起来,同一个对象,在不同的运行时刻,行为是不一样的,就像是类被修改了一样. (2)状态模式的结构和说明 ①Context:环境,也称上下文,通常用来定义客户感兴趣的接口,同时维护一个来具体处理当前状态的实例对象. ②State:状态接口,用来封

21 行为型模式-----状态模式

模式动机(State Pattern):软件系统中,每一个模块在不同的环境下可能发挥着不同的作用,表现为同一对象可能有多种不同的状态,而每种状态下可能有不同的行为.在UML图中,可以用状态图来表示.在程序设计中,我们引入一个抽象状态接口,其中封装了与当前环境状态相关的行为,然后定义具体的状态实现类,根据状态的不同实现不同的行为,并且负责状态之间的切换操作. 参与者: TCPConnection:(当前工作环境 Context):维护一个状态接口的实例,这个实例表示当前环境所处的状态. TCPSt

行为模式-状态模式

行为型模式又可以分成以下四类:第一类:通过父类与子类的关系进行实现.第二类:两个类之间.第三类:类的状态.第四类:通过中间类 状态模式属于第三类,类的状态 当状态改变时,行为也会发生相应变化 下面以投票为例 package behavior.pattern.status.status.example; public interface VoteState { /** * 处理状态对应的行为 * @param user 投票人 * @param voteItem 投票项 * @param vote

[19/05/02-星期四] GOF23_行为型模式(状态模式、观察者模式、备忘录模式)

一.状态模式 [状态接口] /*** * 房间"状态"接口 */ package cn.sxt.state; public interface State { void handle(); } [管理状态类] /*** * 环境.上下文类, 管理房间的状态 *如果这是银行系统,这个类就是账号,根据状态的不同,进行不同的操作 */ package cn.sxt.state; public class HomeContext { private State state; public vo

JS模式--状态模式(状态机)

下面的状态机选择通过Function.prototype.call方法直接把请求委托给某个字面量对象来执行. var light = function () { this.currstate = FSM.off; this.button = null; }; light.prototype.init = function () { var button = document.createElement('button'); self = this; button.innerHTML = '已关灯

js中State模式的解析及运用

 状态模式,在大的范畴中的定义为当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.每种编程语言有不同的实现方式,运用的范围也多用于游戏之中. 这里我用javascript来模拟状态模式,主要思想是通过事件监听的效果来控制一个主要对象的状态.那么何为事件监听的效果呢?在其他语言中,可以通过多个对象的协作来完成状态模式,而我在javascript中可以通过对DOM节点进行事件操控来传递消息,使主要对象接收消息(当然不同状态接收到的消息所产生的反应是不一样的).而在javascr