JavaScript设计模式样例十 —— 组合模式

组合模式(Composite Pattern)

定义:又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。目的:将对象组合成树形结构以表示"部分-整体"的层次结构。场景:您想表示对象的部分-整体层次结构(树形结构),如:文件系统。
// 指令
let directive = {
    eat: {
        excute: () => {
            console.log(‘eat‘)
        }
    },
    sleep: {
        excute: () => {
            console.log(‘sleep‘)
        }
    },
    code: {
        excute: () => {
            console.log(‘Get out there and write code!‘)
        }
    }
}

const callDirective = () => {
    let result = {
        directiveList: [],
        add: (directive) => {
            result.directiveList.push(directive)
        },
        excute: () => {
            for (let ele of result.directiveList.values()) {
                ele.excute()
            }
        }
    }
    return result
}

let command = callDirective()
command.add(directive.eat)
command.add(directive.sleep)
command.add(directive.code)
command.excute()

Git地址:https://github.com/skillnull/Design-Mode-Example

原文地址:https://www.cnblogs.com/Man-Dream-Necessary/p/12419391.html

时间: 2024-09-30 05:19:35

JavaScript设计模式样例十 —— 组合模式的相关文章

javascript设计模式学习之十——组合模式

一.组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性. 实现组合模式的关键: 在java等静态语言中,需要单个对象和组合对象都实现同样的抽象接口,这可以通过抽象类或者接口来实现. 在javascript中,对象的多态性是与生俱来的,没有编译器去检查对象的类型,因此实现组合模式的要点是保证组合兑现个单个对象用友同样的方法,这通常需要使用“鸭子类型”的思想

JavaScript设计模式样例九 —— 桥接模式

桥接模式(Bridge Pattern) 定义:是用于把抽象化与实现化解耦,使得二者可以独立变化. 目的:将抽象部分与实现部分分离,使它们都可以独立的变化. 场景:实现系统可能有多个角度分类,每一种角度都可能变化. let each = (arr, fn) => { for (let i = 0; i < arr.length; i++) { let val = arr[i] if (fn.call(val, i, val, arr)) { return false } } } let arr

JavaScript设计模式样例二十 —— 中介者模式

中介者模式(Mediator Pattern) 定义:用来降低多个对象和类之间的通信复杂性.目的:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.场景:MVC框架中的控制器C就是模型M和识图V的中介者. let mediator = (() => { let msg = {} return { register: (type, action) => { if (!msg[type]) msg[type] = [] m

设计模式(结构型)之组合模式(Composite Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(结构型)之桥接模式(Bridge Pattern)> http://blog.csdn.net/yanbober/article/details/45366781 概述 组合模式又叫做部分-整体模式,使我们在树型结构的问题中模糊简单元素和复杂元素的概念,客户程序可以像

设计模式(9)--迭代器与组合模式

(1)散列表(hashtable)         共迭代器获取 hashtable.values().iterator();  因为每一笔数据都是由键值对组成. (2)迭代器是用来遍历集合的. Java5后集合都出了自己的遍历方式 如增加for循环.           遍历 也称 游走... (3)数组:Array 长定固定   集合:ArrayList 可扩展,取数据不需要转型 (4)Java中有自己的迭代器接口.在java.util.Iterator  . (5)集合:collectio

Javascript 设计模式 单例

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/30490955 一直很喜欢Js,,,今天写一个Js的单例模式实现以及用法. 1.单例模式的写法 单例模式写法相当简单: var singleTon = { m1: "memeber first ", m2: "memeber second ", f1: function () { console.log("fun1 "); } }

设计模式 3 —— 迭代器和组合模式

设计模式目录: 设计模式 1 ——观察者模式 设计模式 2 —— 装饰者模式 设计模式 3 —— 迭代器和组合模式 概要 设计模式 3 -- 迭代器和组合模式

设计模式(七)组合模式Composite(结构型)

设计模式(七)组合模式Composite(结构型) 1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面. 例子1:就是多级树形菜单. 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象.我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象.客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的.对这些类区别使用,使得程序更加复杂.递归使用的时候跟麻烦,而我们如何

设计模式(二)组合模式Composite(表达式求值)

组合模式目标:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性. 透露一下:这个例子可以说是组合模式的典型应用,据说(作者说)某个编译器开发团队用了两个半月的时间实现了表达式求值,被作者用十几行代码就这样实现了. 需求:表达式求值,是编译器的重要组件,本例你能找到的实际代码应该不多,因为是本人根据<C++沉思录>里面的例子亲自敲出来的(当然都是作者的功劳).目的在于支持各种一元运算,二元运算甚至更多的运算都加入到表达式求值中,程序方便扩展