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. 介绍