c#設計模式_全部部分模式_組合模式
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
//葉子節點與非葉子節點皆須實現的功能
abstract class component
{
protected string name;
public component(string name)
{
this.name = name;
}
//這個抽象方法display,在葉子與非葉子中皆要實現它
public abstract void display(int depth);
}
//因為葉了與非葉子節點的特徵不同,故display的實現會有不同,這也就是把display單獨抽出來放在一個抽象基類的作用吧
class composite : component
{
//節點集合,故用arraylist
private ArrayList children = new ArrayList();
public composite(string name)
: base(name)
{
}
//封裝下就可以把指定的引數(物件或值型別)傳給arraylist的add方法
//利用已有的系統方法,加強其功能與作用
//採用了抽象基類component,它是葉子與非葉了節點類皆須實現的功能
public void add(component component)
{
children.Add(component);
}
public void remove(component component)
{
children.Remove(component);
}
public override void display(int depth)
{
Console.WriteLine(new string('*',depth)+name);
foreach (component com in children)
com.display(depth+2);
}
}
class leaf : component
{
public leaf(string name)
: base(name)
{ }
public override void display(int depth)
{
Console.WriteLine(new string('*',depth)+name);
}
}
//客戶端
class Program
{
static void Main(string[] args)
{
//根節點
composite root = new composite("root");
root.add(new leaf("葉子1"));
root.add(new leaf("葉子2"));
//composite.add(方法引數的型別是component)這就很靈活了,它是抽象基類,而葉子與非葉子皆繼承它,所以
//用add可以插入葉子與非葉子的節點了,如果你換成具體的派生類就不這樣靈活了,或者說它的擴充套件性就不好了
composite comp = new composite("composite x");
comp.add(new leaf("leaf xa"));
comp.add(new leaf("leaf xb"));
root.add(comp);
root.display(1);
Console.ReadKey();
}
}
}
寫得亂,現在編碼水平很差,暫記於此
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-732476/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#設計模式之組合模式C#設計模式
- 【設計模式】組合模式設計模式
- 設計模式《組合模式》設計模式
- 設計模式-組合模式設計模式
- 設計模式:組合模式設計模式
- C#設計模式-組合模式(Composite Pattern)C#設計模式
- C#設計模式系列:組合模式(Composite)C#設計模式
- js設計模式–組合模式JS設計模式
- js設計模式--組合模式JS設計模式
- 設計模式系列 – 組合模式設計模式
- javascript設計模式組合模式JavaScript設計模式
- 設計模式(十三):組合模式設計模式
- C#設計模式學習筆記:(9)組合模式C#設計模式筆記
- PHP 設計模式之組合模式PHP設計模式
- GoLang設計模式20 - 組合模式Golang設計模式
- 設計模式【11】-- 搞定組合模式設計模式
- 【C++設計模式】組合模式C++設計模式
- 徒手擼設計模式-組合模式設計模式
- 極簡設計模式-組合模式設計模式
- 設計模式系列之「組合模式」設計模式
- 大話設計模式—組合模式設計模式
- 軟體設計模式————(組合模式)設計模式
- 23種設計模式之組合模式設計模式
- 《Head First 設計模式》:組合模式設計模式
- Java設計模式之(十)——組合模式Java設計模式
- 【趣味設計模式系列】之【組合模式】設計模式
- javascript設計模式 之 7組合模式JavaScript設計模式
- 設計模式系列7--組合模式設計模式
- 設計模式漫談之組合模式設計模式
- 《設計模式四》觀察、組合、享元模式設計模式
- [C++設計模式] composite 組合模式C++設計模式
- 設計模式之組合模式(Composite)分享設計模式
- 設計模式 | 組合模式及典型應用設計模式
- Java設計模式學習08——組合模式Java設計模式
- 《設計模式》 - 7. 組合模式( Composite )設計模式
- 設計模式之組合模式---Composite Pattern設計模式
- 設計模式(十四、十五)----結構型模式之組合模式設計模式
- JavaScript設計模式之策略模式【組合委託】JavaScript設計模式