JavaScript设计模式:八、状态模式

序、设计模式分类
一、装饰者模式(原型链)
二、策略模式
三、代理模式
四、发布订阅模式
五、迭代器模式
六、工厂模式
七、外观模式
八、状态模式
九、单例模式
十、适配器模式

一、概述

一个对象有状态变化,每一个状态变化都会触发一个逻辑,我们不能总是if…else 来写,所以我们就把状态和当前对象分离开来,比如最常见都红绿灯。红灯状态下是(停下),黄灯状态是(警告),绿灯状态是(通行)。那么我们就可以把这3个状态和方法都抽离出来。提高代码复用,符合开放封闭原则

class RedLamp {
  constructor() {
    this.state = '红灯';
    console.log('我是红灯');
  }
  handle() {console.log('红灯停');}
}

class GreenLamp {
  constructor() {
    this.state = '红灯';
  }
  handle(){
    console.log('绿灯行')
  }
}

class YelloLamo {
  constructor() {
    this.state = '黄灯'
  }
  handle(){
    console.log('黄灯警告')
  }
}

class Content {
  constructor() {
    this.state = null;
    console.log('我是实体');
  }
  handleState(lamp) {
    this.state = lamps.state;
    lamp.handle();    
  }
}

let con = new Content();
let red= new RedLamp();
let green = new GreenLamp();
let yellow = new YelloLamo();
con.handleState(red);
con.handleState(green);

状态模式

  • 优势:符合开放封闭原则,提搞代码可以维护性
  • 劣势: 添加了很多类,每个类都有自己的方法和状态,增加系统的负载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值