`
leonardleonard
  • 浏览: 821640 次
社区版块
存档分类
最新评论

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

阅读更多
*本文参考了《JAVA与模式》的部分内容,适合于设计模式的初学者。



合成模型模式属于对象的结构模式,有时又叫做部分-整体模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。如文件夹与文件就是合成模式的典型应用。根据模式所实现接口的区别,合成模式可分为安全式和透明式两种。



安全式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中。


涉及到三个角色:



抽象构件(Component):这是一个抽象角色,它给参加组合的对象定义公共的接口及其默认的行为,可以用来管理所有的子对象。合成对象通常把它所包含的子对象当做类型为Component的对象。在安全式的合成模式里,构件角色并不定义出管理子对象的方法,这一定义由树枝构件对象给出。

树叶构件(Leaf):树叶对象是没有下级子对象的对象,定义出参加组合的原始对象的行为。

树枝构件(Composite):代表参加组合的有下级子对象的对象。树枝构件类给出所有的管理子对象的方法,如Add(),Remove()等。



Component:

public interface Component

{

void sampleOperation();



}// END INTERFACE DEFINITION Component



Leaf:

public class Leaf : Component

{

public void sampleOperation()

{

}

}// END CLASS DEFINITION Leaf



Composite:

public class Composite :Component

{

private ArrayList componentList=new ArrayList();



public void sampleOperation()

{

System.Collections.IEnumerator myEnumerator = componentList.GetEnumerator();

while ( myEnumerator.MoveNext() )

{

((Component)myEnumerator.Current).sampleOperation();

}

}



public void add(Component component)

{

componentList.Add (component);

}



public void remove(Component component)

{

componentList.Remove (component);

}



}// END CLASS DEFINITION Composite



与安全式的合成模式不同的是,透明式的合成模式要求所有的具体构件类,不论树枝构件还是树叶构件,均符合一个固定的接口。类图如下所示:




抽象构件(Component):这是一个抽象角色,它给参加组合的对象定义公共的接口及其默认的行为,可以用来管理所有的子对象。要提供一个接口以规范取得和管理下层组件的接口,包括Add(),Remove()。

树叶构件(Leaf):树叶对象是没有下级子对象的对象,定义出参加组合的原始对象的行为。树叶对象会给出Add(),Remove()等方法的平庸实现。

树枝构件(Composite):代表参加组合的有下级子对象的对象。定义出这样的对象的行为。



Component:

public interface Component

{

void sampleOperation();



void add(Component component);



void remove(Component component);



}// END INTERFACE DEFINITION Component



Leaf:

public class Leaf : Component

{

private ArrayList componentList=null;



public void sampleOperation()

{



}

public void add(Component component)

{



}

public void remove(Component component)

{



}

}// END CLASS DEFINITION Leaf



Composite:

public class Composite :Component

{



private ArrayList componentList=new ArrayList();



public void sampleOperation()

{

System.Collections.IEnumerator myEnumerator = componentList.GetEnumerator();

while ( myEnumerator.MoveNext() )

{

((Component)myEnumerator.Current).sampleOperation();

}

}



public void add(Component component)

{

componentList.Add (component);

}



public void remove(Component component)

{

componentList.Remove (component);

}



}// END CLASS DEFINITION Composite 


 
分享到:
评论

相关推荐

    设计模式C#描述之——简单工厂模式

    ### 设计模式C#描述之——简单工厂模式 #### 知识点概述 简单工厂模式是一种常用的设计模式,属于创建型模式之一。该模式的主要目的是为了封装产品对象的创建过程,将这一过程从客户端分离出来,使客户端无须关心...

    C# 设计模式---完全由C#语言来描述的设计模式

    完全由C#语言来描述的设计模式,是从事.NET开发的程序开发,设计人员必读书籍

    C#程序设计——Windows项目开发

    总的来说,C#程序设计——Windows项目开发涵盖了从基础语法到高级特性的广泛知识,包括但不限于C#语言本身、.NET Framework、Visual Studio IDE、Windows Forms设计、事件驱动编程、数据绑定、资源管理、异常处理、...

    C# 设计模式《设计模式——基于C#的工程化实践及扩展》相关的源码

    《设计模式——基于C#的工程化实践及扩展》相关的源码 ,这是一本讲设计模式的很好的书, 作者有深厚的功底, 从汇编到C++ ,再到C#/Java 等 ,并结合的思想 Martin Fowler的思想 ,对设计模式做了深刻的思考.

    设计模式C#实例——大洋系统

    "设计模式C#实例——大洋系统"这个主题涵盖了五个经典的设计模式:抽象工厂(Abstract Factory)、适配器(Adapter)、桥接(Bridge)、建造者(Builder)以及责任链(Chain of Responsibility)。接下来,我们将...

    C# FIR滤波器——含低通、高通、带通与带阻.zip

    在这个"C# FIR滤波器——含低通、高通、带通与带阻.zip"压缩包中,包含的是用C#语言实现的一系列FIR(Finite Impulse Response,有限冲击响应)滤波器的代码。FIR滤波器是一种线性相位、稳定的数字滤波器,广泛应用...

    C#教程————————基础学习好帮手

    第一部分C#语言描述 第二部分C#程序设计基础 第三部分面向对象的C# 第四部分深入了解C# 第五部分附录

    C#课程设计——自助取款机软件设计

    本次课设使用的是 SQL 数据库,它是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。本系统应为 Windows 应用窗体的设计,据提供的实验环境及以前所学的理论知识,采用 SQL 数据库...

    c#案例————餐饮管理系统

    总的来说,“C#案例——餐饮管理系统”是一个综合性的学习资源,涵盖了C#语言的基础和高级特性,对于学习和实践C#编程的开发者来说,是一个极好的实例教程。通过深入研究此案例,开发者不仅可以提升C#编程能力,还能...

    c#插件模式 ——例子(利用反射机制)

    c#插件模式 ——例子(利用反射机制) foreach (ListViewItem item in listView1.Items) { if (item.Checked) { Assembly assembly = Assembly.LoadFile(Path.Combine(pluginpath, "TestComWin.dll")); // ...

    课件 C# 共2——02

    【标题】"课件 C# 共2——02" 提供的是关于C#编程语言的第二部分课程内容,这通常意味着它会深入探讨在初学阶段已经介绍的基础概念,并进一步扩展C#的知识体系。 【描述】"课件 C# 共2——02" 的描述简洁,但我们...

    新版设计模式手册 - C#设计模式(第二版)

    《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    c#面向对象——封装

    c#面向对象——封装

    c#设计模式

    C#设计模式是针对C#编程语言的特定设计模式应用,它们是经验丰富的开发者们在面对软件设计时总结出的一系列可重用解决方案。这里我们将深入探讨23个经典设计模式,并了解它们在C#中的应用。 1. 创建型模式:这类...

    Visual_C#_2008——设计QQ用户登录界面

    挺好的Visual_C#_2008——设计QQ用户登录界面Visual_C#_2008——设计QQ用户登录界面

    C#课程设计——教务管理系统

    在这个"C#课程设计——教务管理系统"项目中,开发者利用C#编程语言构建了一个完整的系统,旨在满足高校对教务管理的需求。下面我们将详细探讨这个系统的组成部分及其关键技术。 首先,系统的基石是学生登录模块。该...

    设计模式——基于C#的工程化实现及扩展

    #### 第七部分:针对Web和Web Service领域的模式设计技术 这部分专注于Web和Web Service领域内的设计模式和技术。随着互联网技术的发展,这一领域内的设计模式变得越来越重要。这部分的内容可以帮助开发者更好地...

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    在软件设计模式中,工厂模式是一种非常常见的创建型模式,它提供了一种创建对象的最佳方式。C#中的工厂模式分为简单工厂、抽象工厂和单例模式三种,每一种都有其特定的应用场景和优势。 1. **简单工厂模式**: ...

    C#语言讲解的设计模式好书

    《C#语言讲解的设计模式好书》是一套深入探讨C#设计模式的资源集合,包含多本电子书和代码示例。这套资料旨在帮助开发者理解并掌握如何在C#编程中应用设计模式,以提高软件的可维护性、扩展性和复用性。以下是这些...

    设计模式代码——c#

    C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...

Global site tag (gtag.js) - Google Analytics