`

设计模式--结构型--组合模式

 
阅读更多
组合模式

允许你将对象组合成树型结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。

package com.componentpattern;

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

public abstract class Component {

	private String componentname;

	public String getComponentname() {
		return componentname;
	}

	public void setComponentname(String componentname) {
		this.componentname = componentname;
	}

	public abstract void add(Component component);

	public abstract void remove(Component component);

	public void getInfo() {
		System.out.println(this.getComponentname());
	}

	public  List<Component> components = new ArrayList<Component>();

	public List getComponents() {
		return components;
	}

}




package com.componentpattern;

public class ComponentOne extends Component {

	public ComponentOne(String componentname) {
		this.setComponentname(componentname);
		this.components = null;//叶子节点
	}

	@Override
	public void add(Component component) {
	}

	@Override
	public void remove(Component component) {
	}

}



package com.componentpattern;

public class ComponentTwo extends Component {

	public ComponentTwo(String componentname) {
		this.setComponentname(componentname);
		this.components = null;   //叶子节点
	}

	public void add(Component component) {
		// TODO Auto-generated method stub
	}

	public void remove(Component component) {
		// TODO Auto-generated method stub
	}
}



package com.componentpattern;

public class ComponentThree extends Component {

	public ComponentThree(String componentname) {
		this.setComponentname(componentname);
	}

	@Override
	public void add(Component component) {
		// TODO Auto-generated method stub
		this.components.add(component);
	}

	@Override
	public void remove(Component component) {
		// TODO Auto-generated method stub
		this.components.remove(component);
	}

}




package com.componentpattern;

import java.util.List;

public class Test {

	public static void main(String[] args) {
		ComponentOne one = new ComponentOne("one");
		ComponentTwo two = new ComponentTwo("two");
		ComponentThree three = new ComponentThree("three");

		three.add(one);
		three.add(two);

		one.getInfo();
		two.getInfo();
		three.getInfo();
		List<Component> list = three.getComponents();
		for (Component c : list) {
			c.getInfo();
		}

	}

}




输出结果 :
one
two
three
one
two
分享到:
评论

相关推荐

    JAVA-设计模式-结构型模式-组合模式

    JAVA-设计模式-结构型模式-组合模式

    c++设计模式-结构型模式-组合模式

    c++设计模式-结构型模式-组合模式;qt工程;c++简单源码; 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系...

    C++设计模式--基于Qt4开源跨平台开发框架

    首先,我们要理解设计模式的基本类型,包括创建型、结构型和行为型模式。创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类...

    c++设计模式-结构型模式-桥接模式

    c++设计模式-结构型模式-桥接模式;qt工程,c++简单源码; 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度...

    java常用设计模式-组合模式

    组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式使得客户端可以统一对待单个对象和对象组合。在组合模式中,有两种基本类型的对象:叶...

    组合模式-空军指挥系统.zip

    组合模式是一种对象结构型设计模式,它允许我们创建表示部分-整体层次结构的树形对象。在空军指挥系统中,这种模式的应用可以帮助我们构建一个灵活、可扩展的组织架构,其中每个部分(如飞机、飞行编队或基地)都...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    设计模式-创建型模式、结构型模式和行为型模式

    按照不同的功能特性,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 #### 二、创建型模式 创建型模式主要用于解决对象创建的过程,旨在简化对象创建的复杂度,同时保持对象创建的灵活性。主要...

    c++设计模式-结构型模式-代理模式

    代理模式是一种在面向对象设计中广泛应用的结构型设计模式,它提供了一种对目标对象进行间接访问的方式,使得客户端可以通过代理对象与真实对象进行交互,而无需直接接触真实对象。这样做的好处包括增加灵活性、控制...

    设计模式-组合模式

    组合模式是一种软件设计模式,属于结构型模式,它允许我们以树形结构来表示部分与整体的关系,使得我们可以像处理单个对象一样处理整个集合。在iOS开发中,这种模式非常有用,特别是在处理数据结构或者UI组件时,...

    设计模式--组合模式java例子

    组合模式是一种结构型设计模式,它允许我们使用树形结构来表示部分-整体关系,使得我们能够像处理单个对象一样处理整个集合。在Java中,这种模式的应用可以帮助我们简化对复杂对象层次结构的操作,同时保持接口的...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如代理、装饰器、适配器)和行为型模式(如观察者、策略、命令)。这些模式都是在特定上下文中解决设计问题的模板,它们可以提高代码的...

    设计模式-组合实体

    在众多设计模式中,组合实体(Composite)模式是一种结构型模式,它允许我们以树形结构来表示部分与整体的关系,使得用户可以一致地处理单个对象和对象组合。在iOS开发中,组合实体模式尤其有用,因为它简化了复杂...

    java设计模式---诙谐易懂版

    设计模式一般分为三大类:创建型模式、结构型模式和行为型模式。 3. 根据文件内容,诸葛亮给赵云的三个锦囊妙计可以用策略模式来实现。每个妙计对应一个实现了策略接口的具体策略类。例如,BackDoor类实现了...

    设计模式-软件体系结构-实验指导书v2.pdf

    结构型设计模式关注如何组合和构建类或对象,以创建更大的结构。这可能涉及适配器模式(将不兼容接口转换为可用接口)、装饰器模式(动态地给对象添加新功能)、代理模式(代表另一个对象并控制其访问)等。通过这些...

    设计模式课件大全

    设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略...

    组合模式-------树形模式

    组合模式,也称为树形模式,是一种结构型设计模式,它允许我们表示部分-整体层次结构,使得客户端代码可以统一地处理单个对象和对象集合。这种模式将对象组织成树形结构,允许用户对部分或整个树进行操作,简化了...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    2. **结构型模式**:这类模式关注如何组合对象和类,以形成更大的结构。 - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组...

    Java设计模式----通俗易懂版

    这23种设计模式可以分为三类:创建型、结构型和行为型。 1. 创建型设计模式: - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类...

    软件设计模式--填空题+简答题(复习7).rar

    2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...

Global site tag (gtag.js) - Google Analytics