介绍

  • 有状态变化
  • 状态较多,逻辑复杂

示例

  • 红绿灯:不同颜色的变化
  • 开关

UML类图

点击查看【processon】

代码

  1. // 状态 红灯/绿灯/黄灯
  2. class State {
  3. constructor(color) {
  4. this.color = color
  5. }
  6. handle(context) {
  7. console.log(`turn to ${this.color} light`);
  8. context.setState(this)
  9. }
  10. }
  11. // 主体
  12. class Context {
  13. constructor() {
  14. this.state = null
  15. }
  16. getState() {
  17. return this.state
  18. }
  19. setState(state) {
  20. this.state = state
  21. }
  22. }
  23. const context = new Context()
  24. const red = new State('red')
  25. const blue = new State('blue')
  26. const yellow = new State('yellow')
  27. red.handle(context)
  28. yellow.handle(context)
  29. blue.handle(context)
  30. console.log(context.getState())

场景