• js设计模式--行为型--状态模式


      行为型:状态模式

      状态模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。

     1 /**
     2  * 场景:假如要做个四种咖啡机的机器。
     3  * - 美式咖啡态(american):只吐黑咖啡
     4  * - 普通拿铁态(latte):    黑咖啡加点奶
     5  * - 香草拿铁态(vanillaLatte):黑咖啡加点奶再加香草糖浆
     6  * - 摩卡咖啡态(mocha):黑咖啡加点奶再加点巧克力
     7  */
     8 class CoffeeMaker {
     9   constructor() {
    10     // 这里省略咖啡机中和咖啡机状态无关的初始逻辑
    11     this.state = "init"; // 初始化状态,没有任何咖啡模式
    12     this.leftMilk = "1000ml"; // 牛奶存储量
    13   }
    14   stateToProcessor = {
    15     that: this,
    16     american() {
    17       // 在行为函数中拿到咖啡机实例信息并且打印
    18       console.log("牛奶存储量:", this.that.leftMilk);
    19       console.log("只吐黑咖啡");
    20     },
    21     latte() {
    22       this.american();
    23       console.log("加点奶");
    24     },
    25     vanillaLatte() {
    26       this.latte();
    27       console.log("加香草糖浆");
    28     },
    29     mocha() {
    30       this.latte();
    31       console.log("点巧克力");
    32     },
    33   };
    34   // 关注咖啡机状态切换函数
    35   changeState() {
    36     this.state = status;
    37     if (!this.stateToProcessor[state]) {
    38       return;
    39     }
    40     this.stateToProcessor[state]();
    41   }
    42 }
    43 const mk = new CoffeeMaker();
    44 mk.changeState('latte')
    45 // 牛奶存储量:: 1000ml
    46 // 只吐黑咖啡
    47 // 加点奶

         状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的逻辑判断简化。

      状态模式和策略模式是相似的,它们都封装行为,都是通过委托来实现行为分发。

      

  • 相关阅读:
    [Java面试一]Spring总结以及在面试中的一些问题.(转发:http://www.cnblogs.com/wang-meng/p/5701982.html)
    微信开发学习2--消息管理
    微信开发学习1--接入指南(入门,微信开发环境搭建)
    Bootstrap学习5--bootstrap中的模态框(modal,弹出层)
    iOS开发常用的宏
    iOS开发之---多线程技术
    iOS开发 之---返回可重用单元格
    iOS开发之---发送邮件
    ios开发之---UITextField退出键盘
    StoryBoard概览
  • 原文地址:https://www.cnblogs.com/Sabo-dudu/p/14667366.html
Copyright © 2020-2023  润新知