zoukankan      html  css  js  c++  java
  • js设计模式 -- 状态机

    /*****************************抽象类***************************/
    var State = function() {};
    State.prototype.pressButton = function() {
    	throw new Error('pressButton方法必须重写');
    };
    /*****************************状态类***************************/
    //关灯状态
    var OffState = function(light) {
    	this.light = light;
    };
    OffState.prototype = new State(); //继承父类
    //覆盖父类方法
    OffState.prototype.pressButton = function() {
    	console.log('弱光');
    	this.light.setState(this.light.weak);
    };
    // 弱光状态
    var WeakState = function(light) {
    	this.light = light;
    };
    WeakState.prototype = new State(); //继承父类
    // 覆盖父类方法
    WeakState.prototype.pressButton = function() {
    	console.log('强光');
    	this.light.setState(this.light.strong);
    };
    // 强光状态
    var StrongState = function(light) {
    	this.light = light;
    };
    StrongState.prototype = new State(); //继承父类
    // 覆盖父类方法
    StrongState.prototype.pressButton = function() {
    	console.log('关灯');
    	this.light.setState(this.light.off);
    };
    
    //******************灯类********************//
    var Light = function() {
    	this.off = new OffState(this);
    	this.weak = new WeakState(this);
    	this.strong = new StrongState(this);
    	this.button = null;
    };
    Light.prototype.init = function() {
    	var button = document.createElement('button');
    	var _self = this;
    	this.button = document.body.appendChild(button);
    	this.button.innerHTML = '三种状态开关';
    	this.currentState = this.off; //设置当前状态为关闭状态
    	this.button.onclick = function() {
    		_self.currentState.pressButton();
    	};
    };
    Light.prototype.setState = function(newState) {
    	this.currentState = newState;
    };
    
  • 相关阅读:
    oracle 查找或删除重复记录的语句
    多线程案例
    JAVA调用增删改的存储过程
    设计中最常用的CSS选择器
    ORACLE多表查询优化
    oracle存储过程的事务处理
    oracle函数调用存储过程
    oracle存储过程的基本语法
    java.lang.OutOfMemoryError: Java heap space解决方法
    文件操作工具类
  • 原文地址:https://www.cnblogs.com/smss/p/7357873.html
Copyright © 2011-2022 走看看