Design Pattern: Composite 模式

简介:

  学习是分享和合作式的!

转载请注明出处:http://blog.csdn.net/wdzxl198/article/details/9417163

文章摘自: http://www.riabook.cn/doc/designpattern/

如果以绘图为例的话,一个文字是一个绘图元件,一个线段是一个绘图元件,而一个长方形也是一个绘图元件,这些绘图元件可以组成一个图片,如果将这个图片也 视作一个绘图元件,则这么递回绘图下去,就可以组合成一个较大的、复杂的图形元件,这样的目的可以使用Composite模式来解决。
对于使用者而言,无论是文字、线段或长方形,甚至是组合后的图片元件,它们都拥有一个共同的行为,使用者基本上并不会感觉出它们之间的操作有任何的不同,您可以拖曳、放大、缩小等等,这些行为都是一致的。
以 UML 来表示上面这个例子的结构:

Composite

对于Text、Line与Rectangle而言,Picture是一个容器,然而Picture继承Graphic类,所以它也是一个绘图元件,您可以进一步的将Picture组合至另一个Picture中,以形成较大的、复杂的图形。
组合模式的UML结构图如下所示:

Composite

依此架构,您可以递回的组合图形元件,例如:

Composite

除了绘图元件之外,一些具有层次性或组合性的物件也可以使用Composite模式,像是电路元件、设备元件等等,使用Composite模式可以大大减低这些元件设计的复杂度。

Edit by Atlas,

Time:08:20

目录
相关文章
|
数据采集 存储 Web App开发
Java爬虫:深入解析商品详情的利器
在数字化时代,信息处理能力成为企业竞争的关键。本文探讨如何利用Java编写高效、准确的商品详情爬虫,涵盖爬虫技术概述、Java爬虫优势、开发步骤、法律法规遵守及数据处理分析等内容,助力电商领域市场趋势把握与决策支持。
|
存储 API 数据库
云计算-虚拟化-OpenStack
在上一篇《云计算-共享&服务》介绍过:云计算的本质是一种IT资源通过虚拟化进行的共享,是一种更高维度的服务。本文介绍:云计算和虚拟化有哪些区别,以及基于OpenStack的云计算。
|
前端开发 JavaScript
useState和useReducer的区别?
useState和useReducer的区别?
367 0
|
SQL Java 数据库连接
JDBC快速入门(五)--PreparedStatement用法
JDBC快速入门(五)--PreparedStatement用法
260 0
|
Oracle 关系型数据库
oracle学习78-oracle之单行函数之分组函数之课后练习
oracle学习78-oracle之单行函数之分组函数之课后练习
144 0
网络碎片化时代,如何进行深度工作,提升职场竞争力?
据耶鲁大学MBA与伦敦大学学院MFA双学位跨界专家最新研究成果:通过艺术与商业结合实现深度工作。具体来讲,主要分7个步骤。
1592 0
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1008 151