755
搜狐
Design Pattern: Composite 模式
學習是分享和合作式的!
轉載請注明出處:https://blog.csdn.net/wdzxl198/article/details/9417163;
文章摘自: https://www.riabook.cn/doc/designpattern/;
如果以繪圖為例的話,一個文字是一個繪圖元件,一個線段是一個繪圖元件,而一個長方形也是一個繪圖元件,這些繪圖元件可以組成一個圖片,如果將這個圖片也 視作一個繪圖元件,則這麼遞回繪圖下去,就可以組合成一個較大的、複雜的圖形元件,這樣的目的可以使用Composite模式來解決。
對於使用者而言,無論是文字、線段或長方形,甚至是組合後的圖片元件,它們都擁有一個共同的行為,使用者基本上並不會感覺出它們之間的操作有任何的不同,您可以拖曳、放大、縮小等等,這些行為都是一致的。
以 UML 來表示上麵這個例子的結構:
對於Text、Line與Rectangle而言,Picture是一個容器,然而Picture繼承Graphic類,所以它也是一個繪圖元件,您可以進一步的將Picture組合至另一個Picture中,以形成較大的、複雜的圖形。
組合模式的UML結構圖如下所示:
依此架構,您可以遞回的組合圖形元件,例如:
除了繪圖元件之外,一些具有層次性或組合性的物件也可以使用Composite模式,像是電路元件、設備元件等等,使用Composite模式可以大大減低這些元件設計的複雜度。
Edit by Atlas,
Time:08:20
最後更新:2017-04-03 16:48:42
上一篇:
Design Pattern: Bridge 模式
下一篇:
Oracle樹結構查詢——connect by語法詳解
[usaco] 4.1.4 PROB Cryptcowgraphy
阿裏數據庫老司機齊聚,分享一線數據庫實踐經驗:8月24日,線上獨家直播!
JVM源碼分析之臨門一腳的OutOfMemoryError完全解讀
WCF技術剖析之二十七: 如何將一個服務發布成WSDL[基於WS-MEX的實現](提供模擬程序)
跟我一起寫 Makefile
Minikube - Kubernetes本地實驗環境
想要成為Linux大神,你應該和我一樣這樣做!
給2014年的自己開的書單
Top100論文導讀:深入理解卷積神經網絡CNN(Part Ⅰ)
《Linux From Scratch》第二部分:準備構建 第二章:準備新分區- 2.1. 介紹