C#设计模式之我见(三)Ⅱ
今天接着讲创建性模式中的组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
组合模式(Composite Pattern),将对象以树形结构组织起来,以达成"部分-整体"的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。
1. 定义了包含简单对象和组合对象的类层次结构。简单对象可以被组合到复杂对象中,而组合的对象可以再被组合。这样客户端代码中用到简单对象的地方都可以使用组合对象。
2. 简化客户端代码。客户端不用知道某对象是简单对象还是组合对象,可以以一致的方式使用这些对象。
3. 更容易增加新类型的组件。新的组件可以方便地加入已有组合对象中不用改变客户端代码。下面是具体实例:
namespace CompositePattern.DesignPattern
{
using System;
using System.Collections;
abstract class Component //定义抽象组件类
{
protected string strName;
public Component(string name) //定义Component方法
{
strName = name;
}
abstract public void Add(Component c); //声明抽象公有Add方法
public abstract void DumpContents(); //声明抽象公有DumpContents方法
}
class Composite : Component //组合类Composite继承自Component类
{
private ArrayList ComponentList = new ArrayList();
public Composite(string s) : base(s) {}
override public void Add(Component c) //覆写基类Add方法
{
ComponentList.Add(c);
}
public override void DumpContents() //覆写基类DumpContents方法
{
Console.WriteLine("Node: {0}", strName);
foreach (Component c in ComponentList)
{
c.DumpContents();
}
}
}