C#设计模式之组合(Composite)

1.  为什么要用组合?用组合的好处

比如我们有树状结构的对象,我们就可以用组合(Composite)设计模式。我可以很清楚的表示对象的结构。

 

2.  C#中怎样用组合?

GOF中的组合模式:


Leaf
相当于树状结构最底层对象,即树的叶子。

Composite相当于树干,树干下面可以包含树干,当然也可以包含叶子。

它们共同继承树的部分(Component)

现实世界中一个具体的例子:

文件夹的例子,文件夹包含子文件夹和文件。
//文件和文件夹的父接口
public interface folderbase
{
void AddChild(folderbase f); //添加子文件夹
void display(); //显示文件或文件夹
}

//文件 .
public class file : folderbase
{
private int value = 0;
public file(int val)
{
value
= val;
}

public override void AddChild(folderbase c)
{
//这里没有子文件,所以为空
}

public override void display()
{
Console.WriteLine(
"文件:"+value);
}

}

//文件夹类.
public class folder : folderbase
{
private int value = 0;
private ArrayList folderlist = new ArrayList();
public folder (int val)
{
value
= val;
}


public override void AddChild(folderbase c) //添加子文件夹
{
folderlist.Add(c);
}

public override void display()
{
Console.WriteLine(
"文件夹:"+value);
foreach (folderbase c in folderlist)
{
c.display();
//可以显示所有子文件或子文件夹
}

}

}

class MyMain
{
public static void Main()
{
//创建文件夹树.
folder root = new folder(100);// 根文件夹
folder com1 = new folder(200); //文件夹1

file l1
= new file(10);//文件1
file l2 = new file(20);//文件2
//添加两个文件到文件夹1中
com1.AddChild(l1);
com1.AddChild(l2);
Leaf l3
= new Leaf(30);//文件3
root.AddChild(com1);//添加文件1到根文件夹中
root.AddChild(l3);//添加文件3到根文件夹中
root.display();//显示根文件夹下所有的文件及文件夹
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值