`

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

 
阅读更多
组合模式

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

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++设计模式-结构型模式-桥接模式

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

    设计模式课件大全

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

    设计模式-C++

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    设计模式--C++

    2.2.3 组合模式 272.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor 和 Composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持...

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

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

    23种设计模式 -设计模式图解.7z

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    设计模式_组合模式.zip

    这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。 我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的...

    软件设计模式2021秋-实验2-结构型模式实验报告附源码和类图.zip

    软件设计模式2021秋-实验2-结构型模式实验报告附源码和类图.zip 桥接模式、适配器模式、装饰者模式、组合模式、享元模式

    设计模式结构型-适配器

    Java 设计模式3-结构型-适配器、组合、代理、外观

    设计模式之结构型模式

    桥接模式之消息发送、适配器模式之购物车商品推荐、装饰者模式之相亲(男人的描述)、组合模式之对购物网站、享元模式之网店模板

    设计模式-类图

    结构型模式 :适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 行为型模式 :策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者...

    emperwang#advanced-java-docs#16-结构型-组合模式1

    组合模式什么是组合模式Compose objects into tree structures to represent whole-part hierarch

    体系结构学习代码!特别详细丰富

     【例3.2】组合模式-五子棋代码  【例3.3】组合模式-空军指挥系统  【例3.4】组合模式-世界问候语  【例3.7】类适配器模式-客户信息验证  【例3.8】对象适配器模式-字符串排序  【例3.10】外观模式-安全...

    软件设计模式实验2结构型模式源码

    组合模式:用组合模式显示其所选商品信息,并计算所选商品总价的功能。说明:假如王同学到万达生活用品店购物。用 1 个红色小袋子装了 2 包衡阳特产(单价 25 元)、1 张衡阳地图(单价5.8元).....5.享元模式:在...

    设计模式_结构型_组合模式.md

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

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    Java设计模式-图解-附代码

    1.2 结构型模式 17 1.2.1 适配器模式 17 1.2.2 桥接模式 19 1.2.3 组合模式 23 1.2.4 装饰模式 26 1.2.5 外观模式 29 1.2.6 享元模式 32 1.2.7 代理模式 34 1.3 行为型模式 37 1.3.1 责任链模式 37 1.3.2 命令模式 ...

    C#23种设计模式样例代码和UML图

    C#23种设计模式样例代码和UML图等 创建型模式(抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式);...结构型模式(代理模式、桥接模式、适配器模式、外观模式、享元模式、装饰器模式、组合模式)

Global site tag (gtag.js) - Google Analytics