设计模式之组合模式(Composite Pattern)
代码下载
1.概念
将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
纯粹利用这种模式写程序的不常见,C#中TreeView与TreeNode类已经包装的功能足够强大。TreeNode就是这种模式的典型应用。
2.类图

Model.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CompositePattern
{
public class Model
{
public string ID
{
get;
set;
}
public string Name
{
get;
set;
}
}
}
AbstractComponect.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CompositePattern
{
public abstract class AbstractComponect
{
public abstract void Add(AbstractComponect mm);
public abstract void Delete(AbstractComponect mm);
public abstract string GetData(int indent);
protected string _Name = "";
protected Model _Model = null;
public AbstractComponect(string name)
{
_Name = name;
}
public AbstractComponect(string name, Model Model)
{
_Name = name;
_Model = Model;
}
}
}
Tree .cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CompositePattern
{
public class Tree : AbstractComponect
{
private List<AbstractComponect> _list = null;
public Tree(string name)
: base(name)
{
_list = new List<AbstractComponect>();
}
public override void Add(AbstractComponect mm)
{
_list.Add(mm);
}
public override void Delete(AbstractComponect mm)
{
_list.Remove(mm);
}
public override string GetData(int indent)
{
string s = new String('—', indent) +
"树枝名称:" + _Name + "\r\n";
foreach (AbstractComponect mmc in _list)
{
s += mmc.GetData(indent + 2);
}
return s;
}
}
}
Leaf.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CompositePattern
{
public class Leaf : AbstractComponect
{
public Leaf(string name, Model md)
: base(name, md)
{
}
public override void Add(AbstractComponect mm)
{
throw new NotImplementedException();
}
public override void Delete(AbstractComponect mm)
{
throw new NotImplementedException();
}
public override string GetData(int indent)
{
return new String('—', indent) +
"树叶名称:" + _Name +
";信息内容:" + _Model.Name + "\r\n";
}
}
}
3.测试代码
Tree root = new Tree("树枝1");
root.Add(new Leaf("树叶1.1", new Model() { ID = "1.1", Name = "叶子1" }));
root.Add(new Leaf("树叶1.2", new Model() { ID = "1.2", Name = "叶子2" }));
Tree root2 = new Tree("树枝2");
root2.Add(new Leaf("树叶2.1", new Model() { ID = "2.1", Name = "叶子3" }));
root2.Add(new Leaf("树叶2.2", new Model() { ID = "2.2", Name = "叶子4" }));
root.Add(root2);
this.richTextBox1.Text = root.GetData(1);
3.运行结果
—树枝名称:树枝1
———树叶名称:树叶1.1;信息内容:叶子1
———树叶名称:树叶1.2;信息内容:叶子2
———树枝名称:树枝2
—————树叶名称:树叶2.1;信息内容:叶子3
—————树叶名称:树叶2.2;信息内容:叶子4
代码下载
分享到:
相关推荐
组合模式(Composite Pattern)是一种结构型设计模式,用于将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端可以以统一的方式对待单个对象和组合对象,这种模式常用于需要处理树形结构的数据...
**组合模式**(Composite Pattern)是一种常用的结构型设计模式,主要用于构建具有层次结构的对象系统。它允许客户端以一致的方式处理单个对象和组合对象,简化了高层模块的调用。通过组合模式,可以将多个对象组织成...
组合模式是一种结构型设计模式,它将对象组织成树形结构,使得用户可以对单个对象和对象集合进行统一操作。这种模式在处理部分与整体关系时非常有用,允许我们一致地处理单个对象和对象容器。组合模式的关键在于...
**设计模式面面观:组合模式(Composite Pattern)** 组合模式是软件工程中的一种结构型设计模式,它允许我们以树形结构来表示部分与整体的关系,使得客户端代码可以一致地处理单个对象和对象组合。在组合模式中,...
组合模式(Composite Pattern)是一种对象结构型模式,其定义是将多个对象组合成树形结构以表示“整体-部分”关系的层次结构。它使得客户端对单个对象和组合对象的使用具有一致性。在组合模式中,对象被组织成树形...
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的...
迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)是设计模式中的两种重要结构型模式,它们在软件设计中有着广泛的应用。这两种模式都属于GoF(Gang of Four)设计模式,旨在解决特定的问题,提升代码...
组合模式(Composite Pattern)是一种树形结构的设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以对单个对象和组合对象进行一致性的操作处理,即客户程序可以像操作单个对象...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式使得客户端可以统一对待单个对象和对象组合。在组合模式中,有两种基本类型的对象:叶...
组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...
组合模式(Composite Pattern)-结构型模式 (0%) <br>讲义书写模式 在实际的讲解中我会用一套模式来讲述我对设计模式的理解 1.给出当前章节模式的名称 2.讲述一个小故事,提出问题 3.回答这个...
组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器...
C#设计模式(11)-Composite Pattern C#设计模式(10)-Adapter Pattern C#设计模式(9)-Prototype Pattern C#设计模式(8)-Builder Pattern C#设计模式(7)-Singleton Pattern C#设计模式(6)-Abstract ...
单体模式是JavaScript中最基本的设计模式之一。它的主要作用是提供一个命名空间,减少全局变量的数量,避免代码冲突,并组织代码使其易于维护。单体模式可以用来划分命名空间,组织代码和避免代码冲突。 2. 工厂...
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、亨元模式 24、备忘录模式