美文网首页
设计模式:组合模式 职责链模式

设计模式:组合模式 职责链模式

作者: San十二 | 来源:发表于2018-11-24 00:06 被阅读0次

组合模式 职责链模式

组合模式

组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。 在组合模式的树形结构中,所有的节点都类似于继承了一个抽象类一样,需要实现同样名字的一个方法。

鉴于js没有抽象类这玩意;所以这个同名方法只能约定了。假如就约定为execute好了。

var BigCommand = function () {
  this.commands = [];
}

BigCommand.prototype.add = function (command) {
  this.commands.push(command);
}

BigCommand.prototype.execute = function () {
  for (var i = 0; i < this.commands.lenth; i++) {
    var command = this.commands[i];
    command.execute();
  }
}

var bigCommand = new BigCommand();

var Command = function () { }
Command.prototype.execute = function () {
  throw new Error("需要实现execute方法")
}

上诉代码,我们可以通过BigCommand生成一个组合对象,通过Command生成一个小对象。通过bigCommand.add(command),我们将叶子对象推入组合对象;组合对象也可以推入组合对象。这样代码就分离成几个部分了。

职责链模式

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。

既然说是链了,必然有链表的数据结构在其中。鉴于js的异步特性,并不适合用单纯的一个指针来指着下一环;用cb()是更好的选择。

var Chain = function (fn) {
  this.fn = fn
  this.next = null;
} 

Chain.prototype.setNext = function (fn) {
  return this.next = fn;
}

Chain.prototype.execute = function () {
  return this.fn.apply(this, arguments);
}

Chain.prototype.cb = function () {
  return this.next && this.next.apply(this.next, arguments);
}

最后写完发现职责链模式就是个流程控制嘛……还不如直接写流程控制……

相关文章

  • 设计模式:组合模式 职责链模式

    组合模式 职责链模式 组合模式 组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。 在组合模式的树形结...

  • 设计模式-工具链模式和迭代器模式

    设计模式-职责链模式和迭代器模式 1.职责链模式 设计动机客户端发出一个请求,职责链上的对象都可以处理这一请求,而...

  • C++设计模式(3)

    本文预览: 状态模式 组合模式 迭代器 职责链 命令 状态模式 定义:状态模式(State Pattern),允许...

  • iOS面试之设计模式模块

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 单一职责原则 ...

  • Java设计模式系列-责任链模式

    原创文章,转载请标注出处:《Java设计模式系列-责任链模式》 一、概述 职责链模式(称责任链模式)将请求的处理对...

  • Typescript 职责链模式(Chain of Respon

    标签: 前端 设计模式 职责链模式 typescript Chain of Responsibility 请仔细阅...

  • 设计模式值职责链模式(行为型)

    [TOC] 一、行为型模式 介绍职责链模式之前先介绍一下行为型设计模式,因为按照GoF模式分类,职责链就是一种行为...

  • C++笔记十三(C++设计模式)

    本周内容(1)单件模式(2)享元模式(3)状态模式(4)备忘录(5)组合模式(6)迭代器(7)职责链(8)命令模式...

  • iOS设计模式

    五种设计模式:责任链模式、桥接模式、适配器模式、单例模式、命令模式。 六大设计原则:单一职责、开闭原则、 接口隔离...

  • 【设计模式】行为型设计模式汇总(二)

    行为型设计模式范围 观察者模式 模板方法 策略模式 职责链模式 状态模式 迭代器模式 访问者模式 备忘录模式 命令...

网友评论

      本文标题:设计模式:组合模式 职责链模式

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