- 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 链式操作
设计原则验证
发起者于各个处理者进行隔离
符合开放封闭原则
来源: http://www.bubuko.com/infodetail-3289824.html