zoukankan      html  css  js  c++  java
  • 前端设计模式 模板方法模式和职责链模式

    class Action {
        handle() {
            handle1();
            handle2();
            handle3();
        }
        handle1() {
            console.log('1');    
        }
        handle2() {
            console.log('2');    
        }
        handle3() {
            console.log('3');    
        }
    }
    模板方法模式:如上,如果代码中有 handle1,handle2,handle3 这几步处理的话,我们可以通过一个方法给他封装起来,调用的话,调用这一个方法就可以。 对于内部有顺序的方法,可以通过一个方法封装起来,暴露给外部。



    职责链模式:一步操作可能分为多个职责角色来完成。把这些角色都分开,然后用一个链串起来。将发起者以及各个处理者进行隔离。
    比如你要请假,需要审批,需要组长审批,经理审批,最后总监审批
    // 请假审批,需要组长审批,经理审批,最后总监审批
    class Action {
        constructor(name) {
            this.name = name;
            this.nextAction = null;
        }
        setNextAction(action) {
            this.nextAction = action;
        }
        handle() {
            console.log(`${this.name} 审批`);
            if (this.nextAction != null) {
                this.nextAction.handle();
            }
        }
    }
    
    // 测试
    let a1 = new Action('组长');
    let a2 = new Action('经理');
    let a3 = new Action('总监');
    a1.setNextAction(a2);
    a2.setNextAction(a3);
    a1.handle();
    应用场景:promise.then链式操作
     
    设计原则验证
    发起者于各个处理者进行隔离
    符合开放封闭原则
  • 相关阅读:
    web print
    datediff
    Typical AJAX
    sql中构建sql语句,再exec这条SQL语句
    ASP.NET中将数据输出到WORD、EXCEL、TXT、HTM
    sql中添加单引号
    sql语句批处理
    日期分组
    异步线程
    电脑内存大有什么好处?
  • 原文地址:https://www.cnblogs.com/wzndkj/p/11870479.html
Copyright © 2011-2022 走看看