My Composite in C#

//MyComposite
using System;
using System.Collections;

//----------------------------------Class FileElement
abstract class CFileElement
{
//Fields
protected string name;

public CFileElement(string name)
{
this.name=name;
}

public abstract void Add(CFileElement e);
public abstract void Remove(CFileElement e);
public abstract void Display();
};

//Class CFile
class CFile:CFileElement
{
public CFile(string name):base(name){}

public override void Add(CFileElement e)
{
Console.WriteLine("Can't add any files under a file!");
}
public override void Remove(CFileElement e)
{
Console.WriteLine("Can't remove any sub files!");
}
public override void Display()
{
Console.WriteLine(this.name);
}
};

//Class CFolder
class CFolder:CFileElement
{
private ArrayList children =new ArrayList();

public CFolder(string name):base(name){}

public override void Add(CFileElement e)
{
children.Add(e);
}
public override void Remove(CFileElement e)
{
children.Remove(e);
}
public override void Display()
{
Console.WriteLine(this.name);
foreach(CFileElement e in children)
{
e.Display();
}
}

};
//----------------------------------Class Element

//TestApp
class TestApp
{
public static void Main(string[] args)
{
CFolder root = new CFolder("Z:/");
CFolder afolder=new CFolder("Games/");

afolder.Add(new CFile("cstrike.exe"));
root.Add(afolder);

root.Display();
while(true);
}
};

时间: 2024-08-01 14:46:20

My Composite in C#的相关文章

.net设计模式实例之组合模式(Composite Pattern)

一.组合模式简介(Brief Introduction) 组合模式,将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户 对单个对象和组合对象的使用具有一致性. 二.解决的问题(What To Solve) 解决整合与部分可以被一致对待问题. 三.组合模式分析(Analysis)1.组合模式结构 Component类:组合中的对象声明接口,在适当情况下,实现所有类共有接口的行为.声 明一个接口用于访问和管理Component的子部件 Leaf类:叶节点对象,叶节点没有子

VB.Net中文教程(2) Composite样式

教程|中文 1. 从Whole-part关系谈起 回想传统的软件师﹐常甚专注于撰写程序(procedure) 来处理某些资料(data)﹐较少关心软件的整体结构(architecture).在现在的OO软件中﹐把资料及其相关的程序结合在一起﹐封装(encapsulate) 在对象之中.软件师在使用对象时﹐通常把对象视为黑箱(black-box) ﹐不会关心于对象内部之细节﹔因之能专注于对象之间的关系.软件师的主要工作﹐就是在于建立对象之间的互助合作(collaboration) 关系﹐为对象安排

设计模式c#语言描述——合成(Composite)模式

设计 设计模式c#语言描述--合成(Composite)模式 *本文参考了<JAVA与模式>的部分内容,适合于设计模式的初学者. 合成模型模式属于对象的结构模式,有时又叫做部分-整体模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待.如文件夹与文件就是合成模式的典型应用.根据模式所实现接口的区别,合成模式可分为安全式和透明式两种. 安全式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中.类图如下所示: 涉及

设计模式的解析和实现(C++)之八-Composite模式

作用: 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. UML结构图: 抽象基类: 1)Component:为组合中的对象声明接口,声明了类共有接口的缺省行为(如这里的Add,Remove,GetChild函数),声明一个接口函数可以访问Component的子组件. 接口函数: 1)Component::Operatation:定义了各个组件共有的行为接口,由各个组件的具体实现. 2)Component::Add添加

设计模式学习笔记(二十一)—Composite模式

今天开始学习Composite模式,首先让我们看一下它的定义: 将对象组合成树形结构以表示"整体-部分"的层次结构.Composite模式使单个对象和组合对象的使用具有一致性. 下面给出这个模式的结构图: 如果把Composite模式看成是树形结构的话,那么它主要角色有: 1)树干角色(Component):该角色是一个抽象类,它定义了一些操作增删树叶(Leaf)的操作. 2)树枝角色(Composite):树枝上有很多树干,树枝也是树干的一种. 3)树叶角色(Leaf):树干上的树叶

Composite Application Guidance for WPF(7)——模块

既然是Composite Application ,毫无疑问地将涉及到"模块(Module)"以及"模块化(Modularity)",今天简单地谈谈Prism中的模块,这包括:模块化,如何在Prism中枚举和加载模块等等 1,模块化 事实上"模块化"这个标题足以让我心惊胆战而无法完成此篇随笔,因为其是一个非常大的话题,并且在生活中随处可见,如果你对此感兴趣的话,不妨阅读一下<设计规则:模块化的力量>这本书.不过就比较狭隘地从软件开发这

Composite Application Guidance for WPF(5)——依赖注入容器

依赖注入容器和Prism的基础服务已经在本系列随笔中提到过很多次,今天将其分离出来专门说一说 1, 为什么要使用依赖注入容器 我们知道, 在Composite Application中各个模块之间是松耦合的关系, 也就是在设计的时候尽可能地减少模块间的依赖, 但无论如何从业务角度讲, 他们之间总还是要相互通信与合作的. 所以依赖注入容器在这其中扮演了一个桥梁般的角色. 比如当创建某一个组件实例的时候, 其依赖于另外的一个组件或服务, 此时依赖注入容器会将其需要的信息"注入(Injection)&

Composite Application Guidance for WPF(4)——Bootstrapper

在默认情况下,WPF程序的启动方式APP的XAML中指定StartUri,然后IDE会自动帮我们生成一个Main方法,然后将StartUri中指定的窗口New一个出来,并作为应用程序的主窗口,但我们在Composite Application Guidance for WPF(3)--创建第一个Composite WPF Application(如果你不了解Prism的启动方式,那么建议你阅读) 中改变了这种方式: public App() { var boot = new Bootstrapp

Composite Application Guidance for WPF(3)

创建第一个Composite WPF Application 1.前提条件: 你需要下载到CAL(Composite application library)库,实际上就是几个DLL文件,在项目中将会引用到他们来打造我们的程序,你可以从这里下载到它们.当然你也需要一个能打造WPF应用的IDE,比如VS2008. 2.创建Shell Project 2.1.在VS中新建一个WPF Application,将CAL库文件添加到项目引用中 2.2.将自动生成的Window1主窗口及其相应的文件重命名为

无废话C#设计模式之十一:Composite

意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite模式使得用户对单个对象和组合对象的使用具有一致性. 场景 我们知道,一个网络游戏通常会有多个游戏大区.每一个游戏大区会有很多游戏服务器(一个游戏大区就是一组游戏服务器).每一个游戏服务器上会有不同的服务(可以是多个服务).这是一个明显的部分-整体关系,假设我们现在需要制作一个服务器管理工具,用于显示所有大区.服务器以及服务的信息,并且能开启这些服务(可以是单独开启一个服务,也可以是开启整个服务器上的所有服务,也