本文同步更新於blog
组合模式会将类别分为两类:
分别是枝节点类别 (Composite)与叶节点类别 (Leaf)。
其中叶节点类别没有子节点。
根据 组合介面 (Component) 设计的不同,又可分出两种类型。
透明方式 (uniformity)
於介面宣告管理子物件的方法 (Add, Remove),
使得 枝节点类别 (Composite) 与 叶节点类别 (Leaf) 没有区别。
缺点为 叶节点类别 (Leaf) 本身不具备管理子物件的方法,实现它是没有意义的。
安全方式 (type safety)
不於介面宣告管理子物件的方法,而是在 枝节点类别 (Composite) 中宣告。
缺点为客户端调用时须增加对应的判断。
优点:
面对树形架构时,能够使用多态性与递回性的作法。
缺点:
由於介面须同时满足枝节点与叶节点,会使程序码复杂度提高。
[迭代器模式]:
运用组合模式,可以与迭代器模式产生良好的协同作用。
[解译器模式]:
两者有着类似下表的对应关系。
解译器模式 | 组合模式 |
---|---|
终端表达式 (Terminal Expression) | 叶节点类别 (Leaf) |
非终端表达式 (NonTerminal Expression) | 枝节点类别 (Composite) |
[装饰者模式]:
装饰者模式只有一个装饰过後的物件。
而组合模式有着许多个物件。
ʕ •ᴥ•ʔ:组合模式的目的就是实现树形结构。
>>: Google Script+LINE 打造聊天机器人 #1-工具介绍
大家好,今天要介绍 Laravel 其中一个功能'加密',我会将这个加密加入我的专案实作之中。lar...
传送 ref 是一种自动把 ref 从一个 component 传递到它底下的其中一个 child...
导览列(Navigation)是每个网站必要且重要的元件,当使用者进到网页想马上找寻想要的资讯,好的...
前情提要: 本人从事数据处理的工作大约四年之久,主要的语言为R、SQL and Python,身为数...
1. 基本概念 image: 映像档。只能读取。可以从网路下载或是自己建立。 container: ...