博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
23种设计模式之组合模式(Composite)
阅读量:7186 次
发布时间:2019-06-29

本文共 1541 字,大约阅读时间需要 5 分钟。

组合模式又称为整体-部分(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
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
GetChildren(); }
public class Folder : AbstractFile  {      private IList
childList; public Folder(string name) { this.name = name; this.childList = new List
(); } 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
GetChildren() { return childList; } }

 

转载地址:http://bgukm.baihongyu.com/

你可能感兴趣的文章
Java 线程池框架核心代码分析
查看>>
Xpath语法
查看>>
接地气又好用,8 款优秀的国产开源博客系统推荐
查看>>
pg_class的reltablespace字段含义
查看>>
unity简介
查看>>
nginx中try_files参数易被忽略的知识点
查看>>
添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加
查看>>
ES6学习经验
查看>>
20.1-20.4 shell:脚本,脚本结构与执行,date用法,shell脚本的变量
查看>>
上篇|说说无锁(Lock-Free)编程那些事
查看>>
网络的参考模型
查看>>
Istio技术与实践01: 源码解析之Pilot多云平台服务发现机制
查看>>
支付系统设计白皮书:会员(客户)系统设计思路
查看>>
华天软件PLM/CMMP助力西沃客车高效研发生产
查看>>
为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!
查看>>
区块链教程Fabric1.0源代码分析consenter#filter
查看>>
组建网络时如何选取交换机
查看>>
不会发布npm包?进来看看?
查看>>
yum和源码安装redis
查看>>
女生到底适不适合做程序员?!
查看>>