• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

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

 

2.  C#中怎样用组合?

GOF中的组合模式:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


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();//显示根文件夹下所有的文件及文件夹
}

}

转载于:https://www.cnblogs.com/martinxj/archive/2004/06/28/19287.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# 从字符串中提取指定字符类型的内容发布时间:2022-07-10
下一篇:
C# 常用接口学习 ICollection T发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap