美文网首页
设计模式(5)——迭代器模式&状态模式&其他设计模式

设计模式(5)——迭代器模式&状态模式&其他设计模式

作者: zzyo96 | 来源:发表于2020-09-15 13:12 被阅读0次

    一、装饰器模式

    介绍

    • 顺序访问一个集合
    • 使用者无需知道集合的内部结构(封装)
    image.png image.png image.png image.png

    二、状态模式

    介绍

    • 一个对象又状态变化(如收藏/取消收藏)
    • 每次状态变化都会触发一个逻辑
    • 不能总是用If...else来控制,尤其在比较的多的情况下
    image.png

    一个切换红黄绿灯的例子

    image.png image.png
    场景一 有限状态机
    image.png
    import StateMachine from 'javascript-state-machine'
    import $ from 'jquery'
    console.log(StateMachine,333)
    
    //初始化状态机模型
    let fsm = new StateMachine({
      init:'收藏',
      transitions:[
        {
          name:'doStore',
          from:'收藏',
          to:'取消收藏'
        },
        {
          name:'deleteStore',
          from:'取消收藏',
          to:'收藏'
        }
      ],
      methods:{
      //  监听执行收藏
        onDoStore:function () {
          alert('收藏成功')
          updateText()
        },
      //  监听执行取消收藏
        onDeleteStore:function(){
          alert('取消收藏成功')
          updateText()
        }
      }
    })
    
    let $btn = $('#btn1')
    
    $btn.click(function(){
      if(fsm.is('收藏')){
        fsm.doStore()
      }else{
        fsm.deleteStore()
      }
    })
    
    //更新按钮的文案
    function updateText(){
      $btn.text(fsm.state)
    }
    
    //初始化文案
    updateText()
    
    实现一个Promise
    image.png image.png image.png image.png

    实现一个购物车

    效果图

    image.png

    UML类图

    image.png

    代码:https://github.com/zzyo96/JSDesignPatterns/tree/master/demo/shoppingCart

    相关文章

      网友评论

          本文标题:设计模式(5)——迭代器模式&状态模式&其他设计模式

          本文链接:https://www.haomeiwen.com/subject/spwzektx.html