学习设计模式之Composite 模式
2005-03-09 17:27
591 查看
合成模式从字面上来理解即一个对象由其它几N个象组合而成,其N>=1(为什么说N会有时等于1呢,我是这么理解的,当一个对象中包括另一个对象时,它所包括的对象又包括N个其它对象,依次下去,可以看去与这个对象相关的对象会有M个这里M>1,但对象本身相对于它所包含的对象来说有只包含了一个)。多数关于Composite模式的文章都是与树结构相关联,这却是形容得太适合不过了,所以本文也不例外:
先看看树的构成:
我们在学数据结构时就知道树是由树枝节点与树叶构成,树枝节点可以有子的树枝节点与树叶,但树叶却不能有子的树枝节点或子的树叶。
下面是构成树的类图:
abstract public class Tree
public class Node : Tree
public class Leaf : Tree
合成模式#region 合成模式
CompositePattern.Tree tree = new CompositePattern.Node("Root");
CompositePattern.Node n1 = new CompositePattern.Node("TreeNodeLeft");
n1.Add(new CompositePattern.Leaf("LeafLeft"));
n1.Add(new CompositePattern.Leaf("LeafRight"));
CompositePattern.Node n2 = new DesignPatterns.CompositePattern.Node("TreeNodeRight");
CompositePattern.Node n21 = new DesignPatterns.CompositePattern.Node("SubTreeNodeLeft");
n21.Add(new CompositePattern.Leaf("N21Left"));
n2.Add(n21);
tree.Add(n1);
tree.Add(n2);
label1.Text = tree.Display(1);
CompositePattern.Tree subtree = tree.GetChild("TreeNodeRight");
label2.Text = subtree.Display(1);
CompositePattern.Tree subtree2 = tree.GetChild("TreeNodeLeft");
label3.Text = subtree2.Display(1);
#endregion
如有什麼講得不當的地方還請各位指出,非常感謝!
先看看树的构成:
我们在学数据结构时就知道树是由树枝节点与树叶构成,树枝节点可以有子的树枝节点与树叶,但树叶却不能有子的树枝节点或子的树叶。
下面是构成树的类图:
abstract public class Tree
public class Node : Tree
public class Leaf : Tree
合成模式#region 合成模式
CompositePattern.Tree tree = new CompositePattern.Node("Root");
CompositePattern.Node n1 = new CompositePattern.Node("TreeNodeLeft");
n1.Add(new CompositePattern.Leaf("LeafLeft"));
n1.Add(new CompositePattern.Leaf("LeafRight"));
CompositePattern.Node n2 = new DesignPatterns.CompositePattern.Node("TreeNodeRight");
CompositePattern.Node n21 = new DesignPatterns.CompositePattern.Node("SubTreeNodeLeft");
n21.Add(new CompositePattern.Leaf("N21Left"));
n2.Add(n21);
tree.Add(n1);
tree.Add(n2);
label1.Text = tree.Display(1);
CompositePattern.Tree subtree = tree.GetChild("TreeNodeRight");
label2.Text = subtree.Display(1);
CompositePattern.Tree subtree2 = tree.GetChild("TreeNodeLeft");
label3.Text = subtree2.Display(1);
#endregion
如有什麼講得不當的地方還請各位指出,非常感謝!
相关文章推荐
- 步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
- 设计模式学习—组合实体模式(Composite Entity Design Pattern)
- Composite——设计模式学习笔记
- java 设计模式学习笔记八 composite组合模式
- 设计模式学习笔记---composite模式
- Composite——设计模式学习笔记
- 设计模式学习笔记-Composite
- C#面向对象设计模式学习笔记(8) - Composite 组合模式(结构型模式)
- java 设计模式学习笔记八 composite组合模式
- 设计模式学习之组合模式(Composite)
- 设计模式学习笔记八——Composite模式
- 阿Sam的设计模式学习笔记---- Composite模式
- 设计模式学习(结构型模式)—组合模式(Composite)
- 设计模式学习笔记---组合模式composite(Java版)
- 设计模式学习8 Composite
- 学习php设计模式 php实现合成模式(composite)
- 设计模式学习笔记Composite组合模式
- 设计模式学习8 Composite
- 【设计模式】学习笔记13:组合模式(Composite)
- 【设计模式学习笔记九】【结构型模式】【组合模式(Composite)】