惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
WordPress大学
WordPress大学
Recent Announcements
Recent Announcements
G
Google Developers Blog
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
Check Point Blog
J
Java Code Geeks
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
量子位
A
About on SuperTechFans
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 冷风.net

以OO的思想利用JS來實現五子棋 開放幾個原來寫的js代碼,供大家娛樂一下 使用JS寫的第一個游戲[俄羅斯方塊] 假如現在讓你去說服客戶使用asp.net2.0開發系統,你會怎麼說服呢? 對象化javascript日期控件 - 冷风.net - 博客园 工作排程 防止圖片在WEB頁面上下載 - 冷风.net - 博客园 今天從新整理的大小寫數據轉換 - 冷风.net - 博客园 常用的XPATH說明 XmlHttp在DoNet中的完全应用---前/后台完成分离篇 系统用户权限与角色分析 改進Richer的WEB頁面進度條! 学习设计模式之Bridge模式 学习设计模式之生成器(Builder Pattern)模式 再谈Abstract Factory模式来实现数据库操作的类 Factory Method来实现数据库操作的类 不周表結構合併問題 今天下午困惑的問題,終於TMD搞出來了 利用線程實現錠時執行的運行模型
学习设计模式之Composite 模式
冷风.net · 2005-03-09 · via 博客园 - 冷风.net

合成模式从字面上来理解即一个对象由其它几N个象组合而成,其N>=1(为什么说N会有时等于1呢,我是这么理解的,当一个对象中包括另一个对象时,它所包括的对象又包括N个其它对象,依次下去,可以看去与这个对象相关的对象会有M个这里M>1,但对象本身相对于它所包含的对象来说有只包含了一个)。多数关于Composite模式的文章都是与树结构相关联,这却是形容得太适合不过了,所以本文也不例外:
先看看树的构成:
我们在学数据结构时就知道树是由树枝节点与树叶构成,树枝节点可以有子的树枝节点与树叶,但树叶却不能有子的树枝节点或子的树叶。
下面是构成树的类图:

从图中可以看去子树枝下又可以包含多少树枝,依次这么下去,也就是我上面所说的对象中包含子对象,子对象又包含对象。[看上去有点像递归:)]

合成模式根据树枝(抽象类或接口)是否对子树枝进行管理可分为为安全模式和透明模式; 安全模式去在树枝中不提供对子树枝的管理,而让子树枝自己去管理自己,在这种模式下,因子树枝与树叶都是继承自树枝所以让子树枝自己去管理自己对于树叶来说是安全的; 透明模式去在树枝中对子树技进行管理,这样使得子树枝与树叶都具有相同的接口,相对而言子树枝与树叶之间是透明的。但对于树叶而言因没有子树枝,所以树叶去管理时会抛去异常。

下面来看看我用透明模式实现的一个树结构:


在客戶端的實現:

合成模式

如有什麼講得不當的地方還請各位指出,非常感謝!