`
281601139
  • 浏览: 16435 次
  • 性别: Icon_minigender_1
  • 来自: 福建厦门
文章分类
社区版块
存档分类
最新评论

用我的方式讲述-设计模式之组合模式(composite)

阅读更多

composite是树形结构,那么我下面就用树的结构来写代码,希望对大家有所帮助 ======================================================================

 

//分支

public interface Brache {
 public void run();
}

 

======================================================================

 

//花
public class Flower implements Brache {
 public void run() {
  System.out.println("花儿怒放^_^");
 }
}

 

======================================================================

 

//叶子
public class Leaf implements Brache {
 public void run() {
  System.out.println("叶子长大了");
 }
}

 

======================================================================

 

//主干
public class Trunk implements Brache {

 private List<Brache> components = new ArrayList<Brache>();

 public void addComponent(Brache component) {
  if (component instanceof Leaf) {
   System.out.println("长新叶了");
  } else if (component instanceof Flower) {
   System.out.println("花苞初成");
  }
  components.add(component);
 }

 public void removeComponent(Brache component) {
  if (component instanceof Leaf) {
   System.out.println("叶子枯了");
  } else if (component instanceof Flower) {
   System.out.println("花儿谢了");
  }
  components.remove(component);
 }

 public List<Brache> getAllCompoments() {
  return components;
 }

 public void run() {
  for (Brache tempC : components) {
   tempC.run();
  }
 }
}

 

======================================================================

 

public class Client {
 //客户的(演示主干的形成)
 public static void main(String[] args) {
  //叶子
  Leaf leaf = new Leaf();
  //含苞的花儿啊
  Flower flower = new Flower();
  //主干一号
  Trunk trunk1 = new Trunk();
  trunk1.addComponent(leaf);//长出一片叶子
  trunk1.addComponent(flower);//冒出花苞
  trunk1.addComponent(flower);//冒出花苞
  trunk1.addComponent(flower);//冒出花苞
  //主干二号
  Trunk trunk2 = new Trunk();
  //枝繁叶茂
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  //原来主干2是长在主干1上的分支
  trunk1.addComponent(trunk2);
  //像电影一样播放了
  trunk1.run();
 }
}

 

======================================================================

 

看了网上有的兄台写的资料,学习了一下,稍微做了个整理,希望对要学习的兄台有所帮助。呵呵!

分享到:
评论
4 楼 281601139 2010-02-22  
mwmw 写道
不知道该说什么,只是感觉很奇怪,只有一个问题,如果你一不小心往叶子上加一个花的时候怎么办呀? 树根节点的时候如果考虑了这个会比较好的。

叶子上门加不了花,没有这方法存在呢
3 楼 281601139 2009-09-29  
mwmw 写道
不知道该说什么,只是感觉很奇怪,只有一个问题,如果你一不小心往叶子上加一个花的时候怎么办呀? 树根节点的时候如果考虑了这个会比较好的。

恩,是。有空再改改,我的理解不够深刻。
2 楼 mwmw 2009-09-29  
不知道该说什么,只是感觉很奇怪,只有一个问题,如果你一不小心往叶子上加一个花的时候怎么办呀? 树根节点的时候如果考虑了这个会比较好的。
1 楼 281601139 2009-09-29  
编辑器真烂啊

相关推荐

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    组合模式(Composite Pattern)-结构型模式 (0%) &lt;br&gt;讲义书写模式 在实际的讲解中我会用一套模式来讲述我对设计模式的理解 1.给出当前章节模式的名称 2.讲述一个小故事,提出问题 3.回答这个...

    二十三种设计模式【PDF版】

    设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和单位做买卖。文章中还对 Jive再进行了剖析。 设计模式之 Decorator(装饰...

    研磨设计模式(完整带书签).part2.pdf

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

    iOS 设计模式 英文版

    除了这些大家耳熟能详的设计模式之外,本书还探讨了一些不那么著名的模式,如备忘录模式(Memento)、组合模式(Composite)、命令模式(Command)和中介者模式(Mediator)。这些模式虽然可能没有前几种那么...

    您的设计模式

    混编模式讲解可能探讨了如何将不同的设计模式组合使用以解决更复杂的软件问题。 阅读这本书的读者,不论是否具备编程基础,都能从中学到如何设计出更好的代码。对于初级程序员,它提供了编码的指导;对于高级...

    研磨设计模式(完整带书签).part1.pdf

    第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式...

    Python设计模式之组合模式原理与用法实例分析

    本文实例讲述了Python设计模式之组合模式原理与用法。分享给大家供大家参考,具体如下: 组合模式(Composite Pattern):将对象组合成成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象...

    研磨设计模式-part2

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

    研磨设计模式-part4

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

    研磨设计模式-part3

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

    2 组合模式-课程内容.rar

    9. **设计模式的组合使用**:讲述如何将组合模式与其他设计模式结合,解决更复杂的软件设计问题。 通过学习这个课程,开发者能够深入理解组合模式的工作原理,提高设计和实现复杂系统的技能,使代码更加灵活、可...

    新版设计模式手册 通俗的例子讲述设计的方法 1创建型模式 2结构型模式 3 行为模式 详细的设计说明

    3. 组合模式(Composite):允许你将对象组合成树形结构,表现得像单个对象。 4. 装饰模式(Decorator):动态地给一个对象添加一些额外的职责,即扩展功能而不影响其结构。 5. 外观模式(Facade):提供一个简单的...

    Head.First设计模式--22~39.rar.pdf (C#)

    《Head.First设计模式》是软件开发领域中一本非常受欢迎的书籍,它以通俗易懂的方式讲解了设计模式这一复杂的主题。在22到39章节中,作者深入浅出地探讨了多个关键的设计模式,这些模式对于使用C#进行软件开发的...

    研磨设计模式.part3(共4个)

    第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器...

    研磨设计模式.part2(共4个)

    第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器...

    研磨设计模式.part4(共4个)

    第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器...

    研磨设计模式.part1(共4个)

    第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器...

    java设计模式

    2. **结构型模式**:包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、组合模式(Composite)和代理模式(Proxy)。这些模式处理类和对象之间...

    Android源码设计模式解析与实战

    书中除了介绍这些设计模式的基本概念外,还会详细分析这些模式在Android源码中的具体应用,包括但不限于源码中使用的类、接口和对象创建方式。作者会从源码的角度出发,剖析模式的实际代码实现,帮助读者深入理解...

    php设计模式之组合模式实例详解【星际争霸游戏案例】

    本文实例讲述了php设计模式之组合模式。分享给大家供大家参考,具体如下: 星际里面我们可以下载别人制作的地图,或者自己做地图玩。 我们在选择玩哪张地图的时候,可以看到游戏列出当前地图包里面的地图或地图包的...

Global site tag (gtag.js) - Google Analytics