23种设计模式之组合模式(Composite)
组合模式又称为整体-部分(Part-whole)模式,属于对象的结构模式。在组合模式中,通过组合多个对象形成树形结构以表示整体-部分的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。
优点:
1)定义了由主要对象和复合对象组成的类层次结构
2)使得添加新的组件类型更加简单。
3)提供了结构的灵活性和可管理的接口。
使用场景:
1)想要表示对象的整个或者部分的层次结构。
2)想要客户端能够忽略复合对象和单个对象之间的差异。
3)结构可以具有任何级别的复杂性,而且是动态的。

Composite 模式
public class File : AbstractFile
{
public File(string name)
{
this.name = name;
} public override bool AddChild(AbstractFile file)
{
return false;
} public override bool RemoveChild(AbstractFile file)
{
return false;
} public override IList<AbstractFile> GetChildren()
{
return null;
}
}
public abstract class AbstractFile
{
protected string name;
public void PrintName()
{
Console.WriteLine(name);
} public abstract bool AddChild(AbstractFile file);
public abstract bool RemoveChild(AbstractFile file);
public abstract IList<AbstractFile> GetChildren();
}
public class Folder : AbstractFile
{
private IList<AbstractFile> childList;
public Folder(string name)
{
this.name = name;
this.childList = new List<AbstractFile>();
} public override bool AddChild(AbstractFile file)
{
childList.Add(file);
return true;
} public override bool RemoveChild(AbstractFile file)
{
childList.Remove(file);
return true;
} public override IList<AbstractFile> GetChildren()
{
return childList;
}
}
23种设计模式之组合模式(Composite)的更多相关文章
- 二十四种设计模式:组合模式(Composite Pattern)
组合模式(Composite Pattern) 介绍将对象组合成树形结构以表示"部分-整体"的层次结构.它使得客户对单个对象和复合对象的使用具有一致性.示例有一个Message实体 ...
- 【Unity3D与23种设计模式】组合模式(Composite)
前段时间在忙一个新项目 博客好久没有更新了 GoF中定义: "将对象以树状结构组合,用以表现部分-全体的层次关系.组合模式让客户端在操作各个对象或组合时是一致的." 是一致的意思就 ...
- java的23种设计模式之建造者模式
场景和本质 场景 本质 案例 原理 应用场景 场景和本质 场景 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样一个问题需要处理:装配这些子组件是不是有个步骤问题? ...
- 乐在其中设计模式(C#) - 组合模式(Composite Pattern)
原文:乐在其中设计模式(C#) - 组合模式(Composite Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 组合模式(Composite Pattern) 作者:weba ...
- 实践GoF的23种设计模式:建造者模式
摘要:针对这种对象成员较多,创建对象逻辑较为繁琐的场景,非常适合使用建造者模式来进行优化. 本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简 ...
- php 23种设计模型 - 组合模式(合成模式)
组合模式(Composite) 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这 ...
- python 设计模式之组合模式Composite Pattern
#引入一 文件夹对我们来说很熟悉,文件夹里面可以包含文件夹,也可以包含文件. 那么文件夹是个容器,文件夹里面的文件夹也是个容器,文件夹里面的文件是对象. 这是一个树形结构 咱们生活工作中常用的一种结构 ...
- 【设计模式】组合模式 Composite Pattern
树形结构是软件行业很常见的一种结构,几乎随处可见, 比如: HTML 页面中的DOM,产品的分类,通常一些应用或网站的菜单,Windows Form 中的控件继承关系,Android中的View继承 ...
- JAVA开发的23种设计模式之 --- 桥接模式
桥接模式 概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构. 应用场景 实现系统可能有多 ...
随机推荐
- js requestAnimationFrame
requestAnimationFrame,Web中写动画的另一种选择 原文:https://www.cnblogs.com/Wayou/p/requestAnimationFrame.html H ...
- jsTree 插件
html代码 <div id="jstree1"></div> js代码: <script src="__STATIC__/h5/js/jq ...
- Greenplum-cc-web监控软件安装时常见错误
错误error: 1.no pg_hba.conf entry for host “::1”, user “gpmon”, database “gpperfmon”, SSL off 解决: vi ...
- mysql主从复制-方案1
mysql主机master 1. 编辑mysql配置文件my.cnf server_id = 1 #server_id服务器唯一标识 log_bin = mys ...
- 【scala】 scala 基础(一)
至于什么是scala,摘录一段 维基百科的解释: scala 下载 安装 省略 1.环境变量配置完成后 命令行报错,因为scala 的安装路径里边包含空格 修改后即可.由于我的本地包含空格,此处CLI ...
- Explore Basic Behavior of the TurtleBot ---3
原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ Introduction 此示例帮助您使用turtlebot的自主性. 驱动机器人向前 ...
- 【Cesium】模型转换和使用(转)
http://52.4.31.236/convertmodel.html https://blog.csdn.net/UmGsoil/article/details/74572877 var view ...
- SpringBoot(四)-- 整合Servlet、Filter、Listener
SpringBoot中有两种方式可以添加 Servlet.Filter.Listener. 1.代码注册 通过ServletRegistrationBean. FilterRegistrationBe ...
- Linux 常用文件
/etc/exports /etc/services /etc/sysctl.conf /etc/logrotate.conf /etc/docker/key.json /etc/docker/dae ...
- C# Serializable对象序列化的作用
http://www.cnblogs.com/linlf03/archive/2011/11/03/2234424.html 1.序列化定义:将对象转换为容易传输的格式的过程.例如,可以序列化一个对象 ...