23种设计模式之组合模式(Composite)

简介: 23种设计模式之组合模式(Composite)组合模式又称为整体-部分(Part-whole)模式,属于对象的结构模式。

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; } }

 

AbstractFile rootFolder = new Folder("C://"); AbstractFile compositeFolder = new Folder("composite"); AbstractFile windowsFolder = new Folder("windows"); AbstractFile file = new Composite.File("TestComposite.cs"); rootFolder.AddChild(compositeFolder); rootFolder.AddChild(windowsFolder); compositeFolder.AddChild(file); rootFolder.PrintName(); IList<AbstractFile> children = rootFolder.GetChildren(); foreach (AbstractFile item in children) { item.PrintName(); }

 

 

目录
相关文章
|
20天前
|
设计模式 安全 Java
[设计模式Java实现附plantuml源码~结构型]树形结构的处理——组合模式
[设计模式Java实现附plantuml源码~结构型]树形结构的处理——组合模式
|
22天前
|
设计模式 Java 容器
【设计模式系列笔记】组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树状结构以表示部分-整体的层次结构。组合模式使得客户端可以统一处理单个对象和对象组合,而无需区分它们的类型。
43 12
|
1月前
|
设计模式 Java
小谈设计模式(20)—组合模式
小谈设计模式(20)—组合模式
|
1月前
|
设计模式 存储 Java
23种设计模式,组合模式的概念优缺点以及JAVA代码举例
【4月更文挑战第5天】组合模式(Composite Pattern)是一种结构型设计模式,旨在通过将对象组合成树形结构以表示部分-整体的层次结构,使用户对单个对象和组合对象的使用具有一致性。这种模式让客户可以统一地处理单个对象和组合对象
43 6
|
2月前
|
设计模式 JavaScript uml
设计模式之组合模式
设计模式之组合模式
设计模式之组合模式
|
2月前
|
设计模式 存储 安全
【设计模式】组合模式
【设计模式】组合模式
|
3月前
|
设计模式 Java
浅谈设计模式 - 组合模式(十二)
浅谈设计模式 - 组合模式(十二)
52 0
|
4月前
|
设计模式 存储 安全
聊聊Java设计模式-组合模式
组合(Composite)模式,又叫做树形模式,主要用来处理树形结构数据。是将一组对象组织成树形结构,以表示一种“部分-整体”的层次结构。让客户端可以统一单个对象和组合对象的处理逻辑
31 1
聊聊Java设计模式-组合模式
|
4月前
|
设计模式 存储
设计模式 | 组合模式
设计模式 | 组合模式
12 0
|
4月前
|
设计模式 Go 开发工具
Golang设计模式——17组合模式
Golang设计模式——17组合模式
13 1