`
xieyaxiong
  • 浏览: 41099 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

design pattern——组合模式

 
阅读更多

针对问题:组合模式使我们在处理树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

 

 

 

 

组合模式结构图:

 



 

 

 

 

 

组合模式实现代码:

 

/**
 * 为树叶或树枝抽象一个接口
 * @author bruce
 *
 */
public abstract class Component {
	
	public abstract void operation();
	
	public void add(Component component){
		throw new UnsupportedOperationException();
	}
	
	public void remove(Component component){
		throw new UnsupportedOperationException();
	}
	
	public Component getChild(int index){
		throw new UnsupportedOperationException();
	}

}





/**
 * 树叶
 * @author bruce
 *
 */
public class Leaf extends Component{
	
	private String name;
	
	public Leaf(String name){
		this.name=name;
	}
	
	@Override
	public void operation() {
		// TODO Auto-generated method stub
		System.out.println(name);
	}

}




/**
 * 树枝
 * @author bruce
 *
 */
public class Composite extends Component{
	
	private List<Component> list=new ArrayList<Component>();
	
	private String name;
	
	public Composite(String name){
		this.name=name;
	}
	
	@Override
	public void operation() {
		// TODO Auto-generated method stub
		System.out.println(name);
		/**
		 *  for..each 递归调用operation()
		 */
		Iterator<Component> iterator=list.iterator();
		while(iterator.hasNext()){
			Component component=iterator.next();
			component.operation();
		}
	}
	
	@Override
	public void add(Component component) {
		// TODO Auto-generated method stub
		list.add(component);
	}
	
	@Override
	public void remove(Component component) {
		// TODO Auto-generated method stub
		list.remove(component);
	}
	
	@Override
	public Component getChild(int index) {
		// TODO Auto-generated method stub
		return list.get(index);
	}

}






/**
 * 测试
 * @author bruce
 *
 */
public class Client {
	
	public static void main(String[] args) {
		Component c=new Composite("C:/");
		Component cl=new Leaf("test.java");
		
		Component cc=new Composite("C:/program file/");
		Component cclA=new Leaf("QQ.exe");
		Component cclB=new Leaf("360.exe");
		
		cc.add(cclA);
		cc.add(cclB);
		
		c.add(cl);
		c.add(cc);
		
		c.operation();
		
		/**
		 * output:
		 * 
		    C:/
			test.java
			C:/program file/
			QQ.exe
			360.exe
		 */
	}

}


 

 

  • 大小: 8.2 KB
分享到:
评论

相关推荐

    design-pattern-java.pdf

    树形结构的处理——组合模式(二) 树形结构的处理——组合模式(三) 树形结构的处理——组合模式(四) 树形结构的处理——组合模式(五) 装饰模式-Decorator Pattern 扩展系统功能——装饰模式(一) 扩展系统...

    zkk950815#design-pattern-java-1#树形结构的处理——组合模式(四)1

    而且无论客户端如何定义叶子构件对象都无法调用到这些方法,不需要做任何错误和异常处理,容器构件再根据需要增加访问和管理成员的方法,但这时候也存在一个问题:客户端不

    GoF的经典著作设计模式(Design Pattern)

    10. **组合模式**:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 11. **享元模式**:运用共享技术有效地支持大量细粒度的对象,主要用于节省内存,提高...

    模式举例代码——设计模式和举例代码

    - 组合模式:允许你将对象组合成树形结构,表现得像单个对象。 - 装饰模式:动态地给一个对象添加一些额外的职责,可以增加或修改其功能。 - 外观模式:为子系统提供一个统一的接口,使得子系统更容易使用。 - ...

    设计模式design-pattern-java.pdf

    组合模式允许用户将对象组织成树形结构以表示部分-整体层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 #### 3.4 装饰模式 装饰模式动态地给一个对象添加一些额外的职责。就增加功能而言,装饰...

    Design Pattern FrameworkTM

    为了帮助 .NET 开发者更好地理解和应用这些设计模式,《Head First 设计模式》为 .NET 2.0 特别推出了一个配套文档——《设计模式框架》(Design Pattern FrameworkTM),该文档涵盖了原书中介绍的所有设计模式,并...

    HeadFirst Design Pattern

    2. 结构型模式:这类模式主要关注如何将类或对象组合成更大的结构,如适配器模式(Adapter)、桥接模式(Bridge)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、组合模式(Composite)和...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    通过阅读GOF23种设计模式.docx文档和探索DesignPattern项目中的代码,你可以深入理解每种模式的用途、优点以及如何在C#和.NET Core环境中实现它们。对于想要提升编程技能和代码质量的开发者来说,这是一个宝贵的资源...

    Introduction to Design Pattern in C#

    虽然对于初学者来说,面对英文资料可能会感到困难,但“Design Pattern In C# (英文).pdf”这本书为读者提供了23种经典设计模式的详细解释,包括了它们的概念、实现方式以及在C#中的应用实例。尽管阅读时可能会遇到...

    design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip

    - 组合模式:允许你将对象组合成树形结构来表示“部分-整体”的层次结构。 - 装饰模式:动态地给一个对象添加一些额外的职责,增强功能而不改变其原有结构。 - 外观模式:为子系统提供一个一致的接口,简化客户端...

    Design Pattern

    - 组合模式(Composite):允许你将对象组合成树形结构来表现“整体/部分”层次结构。 - 外观模式(Facade):为子系统提供一个统一的接口,简化其使用。 - 代理模式(Proxy):为其他对象提供一种代理以控制对这...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...

    设计模式C++版(pdf版)

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是软件工程领域中一个极为重要的概念,它代表着一系列被广泛接受的解决特定问题的方法。GoF(Gang of Four)所提出的23种设计模式更是...

    设计模式 Head First

    #### 第9章:良好的集合管理——迭代器模式和组合模式 迭代器模式提供了一种方法来顺序访问聚合对象中的一系列数据,而不暴露其内部表示。组合模式则将对象组织到树形结构中以表示部分整体层次结构,使得客户端可以...

    gof设计模式中英双语版

    其中包括适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式和代理模式。这些模式有助于减少类之间的耦合,提高代码的可重用性和可维护性。 3. 行为型模式:这类模式主要关注对象间如何交互和分配...

Global site tag (gtag.js) - Google Analytics