`
youngmaster
  • 浏览: 57238 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 设计模式之: 组合模式(Composite)

阅读更多

//Component.java

package com.youngmaster.model.Composite;
/**
 * @author youngmaster 
 * @E-mail:youngmaster.fly@gmail.com
 * @version eclipse 3.4
 * @create time:2009-9-13 上午03:24:55
 * 组件抽象角色 
 */

public interface Component {  
      
    public void run();  
  
}  

 

//Leaf.java

package com.youngmaster.model.Composite;

/**
 * @author youngmaster 
 * @E-mail:youngmaster.fly@gmail.com
 * @version eclipse 3.4
 * @create time:2009-9-13 上午03:25:54
 * 叶子角色
 */

public class Leaf implements Component {

	public void run() {
		System.out.println(" run invoked...");
	}

}

 

//Composite.java

package com.youngmaster.model.Composite;

import java.util.ArrayList;
import java.util.List;

/**
 * @author youngmaster 
 * @E-mail:youngmaster.fly@gmail.com
 * @version eclipse 3.4
 * @create time:2009-9-13 上午03:27:33
 * 
 *  组合角色 
 * 实现组件角色接口,并且添加,删除的也是组件角色 
 *  
 * Composite本来可以再包含Leaf和Composite的。而 Leaf和Composite 又都属于 Component,所以增加,删除 的是Component 
 *  
 * 组合模式主要分为2种 
 *  
 * 1 透明式 
 
 * 添加Component对象的操作定义在Component角色中,这样的话不仅Composite需要实现这些方法,Leaf也需要实现这些方法, 
 * 而这些方法对于Leaf来说没有任何意义,不过将系统实现统一起来了,因此对用户来说透明(用户无需区分Composite还是Leaf) 
 *   ,因为这些角色中都具备这些方法。 
     
 *2 安全式 
 
  *  添加Component对象的操作定义在Composite角色中,这样的话Leaf就无需实现这些方法(因为Leaf本身根本不需要实现这些方法) 
 */

public class Composite implements Component {

	List<Component> list = new ArrayList<Component>();  
    
    //添加  
    public void addComponent(Component component){  
        list.add(component);  
    }  
    //删除  
    public void removeComponent(Component component){  
        list.remove(component);  
    }  
      
    //get  
    public List<Component> getAll(){  
        return list;  
    }  
      
    public void run(){  
        for(Component component : list){  
            component.run();  
        }  
    }  

}

 

//Client.java

package com.youngmaster.model.Composite;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version eclipse 3.4
 * @create time:2009-9-13 上午03:29:30
 */
public class Client {

	public static void main(String[] args) {

		Leaf leaf1 = new Leaf();
		Leaf leaf2 = new Leaf();
		Leaf leaf3 = new Leaf();

		Composite composite = new Composite();

		composite.addComponent(leaf1);
		composite.addComponent(leaf2);

		Composite composite1 = new Composite();
		composite1.addComponent(composite);
		composite1.addComponent(leaf3);

		composite1.run();

	}

}
 

关于设计模式,还有一篇图文并茂的文章,非常好:

http://blog.csdn.net/xmouse/archive/2008/04/11/2281920.aspx

分享到:
评论

相关推荐

    JAVA设计模式chm文档

    设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of ...

    JAVA设计模式之结构模式

    这是JAVA设计模式中属于结构模式的部分,包括Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)的源代码。其中有些模式中...

    33种JAVA设计模式DEMO

    组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任...

    Java 设计模式

    java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元...

    Java设计模式之组合模式(Composite模式)介绍

    主要介绍了Java设计模式之组合模式(Composite模式)介绍,Composite定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性,需要的朋友可以参考下

    java设计模式之组合模式(Composite)

    主要为大家详细介绍了java设计模式之组合模式Composite,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    设计模式_组合模式.zip

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的...

    java设计模式教程+源代码

    Composite ( 组合模式 ) Decorator ( 装饰模式 ) Facade ( 外观模式 ) Flyweight ( 享元模式 ) Proxy ( 代理模式 ) Chain of Responsibility ( 责任链模式 ) Command ( 命令模式 ) Interpreter ( 解释器模式 ...

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    JAVA设计模式-day2.pdf

    JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...

    java设计模式之组合模式.docx

    把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。就像是图书管理员对图书馆的书籍进行整理,既可以对每一部分...容器(Composite)构建角色:有容器的特征,可以包含子节点。

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    java的设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式...

    23种java设计模式

    2、结构模式:Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)。3、行为模式:Iterator(迭代模式)、Template(模板...

    Java设计模式(含代码)

    Java设计模式 (含有相关源码) Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 Adapter:将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能...

    java餐饮管理系统源码6-design_patterns:设计模式

    Java设计模式书籍: 大话设计模式 Head First 设计模式 设计模式的类型: 总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、 行为型模式...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、亨元模式 24、备忘录模式

    java设计模式源码-DesignPattern:设计模式(Java实现源码)

    java ...组合模式(compositePattern) 装饰器模式(decoratorPattern) 外观模式(facadePattern) 享元模式(flyweightPattern) 代理模式(proxyPattern) 责任链模式(chainPattern) 命令模式(commandPatter

    Java设计模式,并加上个人理解

    11. 组合模式 (Composite Pattern) 12. 装饰者模式 (Decorator Pattern) 13. 访问者模式 (Visitor Pattern) 14. 迭代器模式 (Iterator Pattern) 15. 享元模式 (Flyweight Pattern) 16. 桥接模式 (Bridge ...

    23种java版设计模式源码案例.zip

    23种java版设计模式源码案例.zip 0.目录 创建型模式(creational) 简单工厂(simplefactory) 动态工厂(dynamic) 抽象工厂(abstract) 单例模式(singleton) 建造者模式(builder) 原型模式(prototype) 结构型模式...

    java 设计模式资料

    Composite:将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。 Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为...

Global site tag (gtag.js) - Google Analytics