`
donald3003a
  • 浏览: 65661 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • 淼淼E馒头: 这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念 ...
    合成模式

合成模式

阅读更多
合成(Composite)模式有时又叫做部分-整体(Part-Whole)模式。
合成模式将叶子对象合成到树的结构中,可以用来描述整体与部分的关系。
这样可以任意的添加叶子节点。
1、模式涉及到的三个角色
1)抽象构件(Component):这是一个抽象(也可以使抽象类)角色,它给所有参加合成的对象规定抽象方法
2)叶子构件(Leaf):参加合成的树叶对象。一个树叶没有下级的子对象。定义出参加具体方法的实现。
3)树枝构件(Composite)角色:管理所有叶子的实现类。他本来也是抽象结构的子类。
合成模式可以看成一棵树,抽象构件就是主干,树枝构件就是树枝,他对叶子进行管理。
具体实现
1、抽象构件
public abstract class Moive {
	protected abstract void play();
}

2、树枝构件
import java.util.ArrayList;
import java.util.List;

public class MoviePlayer extends Moive {

	private final List<Moive> moives = new ArrayList<Moive>();

	@Override
	protected void play() {
		for (Moive moive : moives) {
			moive.play();
		}
	}

	public void addMoive(Moive moive) {
		moives.add(moive);
	}

	public void removeMoive(Moive moive) {
		moives.remove(moive);
	}

}

3、叶子节点
public class ActionMovie extends Moive {

	@Override
	protected void play() {
		System.out.println("show action movie");
	}

}
public class HorrorMovie extends Moive {

	@Override
	protected void play() {
		System.out.println("show horror movie");
	}

}
public class LoveMovie extends Moive {

	@Override
	protected void play() {
		System.out.println("show love movie");
	}

}



具体调用
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MoviePlayer player = new MoviePlayer();
		player.addMoive(new ActionMovie());
		player.addMoive(new LoveMovie());
		HorrorMovie horrorMovie = new HorrorMovie();
		player.addMoive(horrorMovie);
		player.play();
		System.out.println("The horror movie is too scary.");
		player.removeMoive(horrorMovie);
		player.play();
	}

}


使用这个模式可以轻易的合成子节点。
分享到:
评论
1 楼 淼淼E馒头 2013-09-11  
这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念
我觉得用桥梁模式更好
电影人和电影是两个不同的层次 电影可以理解为抽象
人可以理解为具体 有了人。。电影才会有动作
合成模式关键点 整体和部分能看成某一个抽象事物

相关推荐

    设计模式之合成模式Java实现和类设计图

    合成模式(Composite Pattern)是软件工程中的一种设计模式,它属于结构型模式,主要用于处理对象的组合。在合成模式中,我们能够将简单对象和组合对象以统一的方式进行操作,这样用户就可以忽略对象的复杂性,而...

    学习php设计模式 php实现合成模式(composite)

    合成模式(Composite Pattern)是一种设计模式,它允许你将对象组成树形结构以表示“部分-整体”的层次结构。使用合成模式可以使客户对单个对象和组合对象的使用具有一致性,也就是说,客户不需要知道处理的是一个...

    qt里的图片合成

    这是一个枚举类型,定义了25种不同的合成模式,每种模式决定了两个图像在合并时像素如何相互作用。这些模式主要基于颜色混合理论,包括加法、减法、乘法、屏幕、覆盖、差集等。例如: 1. `CompositionMode_...

    JAVA与模式

    ### JAVA与模式之合成模式详解 #### 一、引言 在阎宏博士的经典著作《JAVA与模式》中,合成模式被详细介绍并解释为一种重要的设计模式,它属于对象的结构模式之一,常被称为“部分—整体”模式。合成模式通过树形...

    浅析23种软件设计模式

    8. 合成模式:合成模式的主要思想是将对象组织到树结构中,可以用来描述整体与部分的关系。这种模式的优点是可以使客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待,但缺点是增加了系统的复杂度。 ...

    MS-TTS影视解说配音工具神器 解锁版合成语音非常接近真人

    5、SSML模式:试听模式主体内容长度不得超过150字符,合成模式主体内容长度不得超过2500字符; 更新内容: 1.9.5 1、界面大小可自行调整; 2、Edge接口数据汉化; 3、角色数量增加到20个; 4、恢复强制更新。...

    PS叠加合成扩展面板 Creative Retouch.zip

    "PS叠加合成扩展面板 Creative Retouch.zip" 提供的是一个专为Photoshop设计的叠加合成工具扩展面板,它集成了多种合成模式和效果,旨在提升设计师在图像处理中的效率和创意。 在Photoshop中,叠加合成是一种重要的...

    C#设计模式结构型

    在结构型设计模式中,合成模式(Composite)和享元模式(Flyweight)是两个重要的模式。 首先,我们来讨论合成模式。合成模式,又称为组合模式,它允许将对象组合成树形结构来表示整体/部分的层次结构。这种结构...

    Delphi模式编程第一分卷

    11.3.1 合成模式在组织机构管理系统中的应用 11.3.2 范例小结 第12章 装饰者模式(Decorator) 12.1 模式解说 12.2 结构和用法 12.2.1 模式结构 12.2.2 代码模板 12.2.3 问题讨论 12.3 范例与实践 12.3.1 ...

    设计模式C#版

    合成模式允许你将对象组合成树形结构以表示“部分-整体”的层次结构。组合让客户可以统一处理个别对象以及组合对象。 十九、装饰模式 装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成...

    设计模式学习笔记总结

    这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...

    Delphi模式编程第二分卷

    11.3.1 合成模式在组织机构管理系统中的应用 11.3.2 范例小结 第12章 装饰者模式(Decorator) 12.1 模式解说 12.2 结构和用法 12.2.1 模式结构 12.2.2 代码模板 12.2.3 问题讨论 12.3 范例与实践 ...

    编程的23种设计模式(mm设计模式,形象易懂)

    8. **合成模式**:如同mm挑选的t恤、裙子和包包组成一套礼物,合成模式用于构建部分-整体关系的树状结构,允许客户端将简单组件和复杂组件统一处理。 9. **装饰器模式**:比如在照片背后写字,装饰器模式可以在不...

    Java中23种设计模式详解

    合成模式将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式使得客户对单个对象和复合对象的使用具有一致性。 8. 装饰模式(Decorator) 装饰模式动态地给一个对象添加一些额外的职责。这种模式使得...

    JAVA常用设计模式详解大全.doc

    结构模式是指对象之间的结构关系的模式,包括适配器模式、桥梁模式、合成模式、装饰模式、门面模式、享元模式和代理模式等。 6. 适配器模式(Adapter Pattern) 适配器模式是一种结构模式,提供了一种使得不兼容的...

    JAVA设计模式与J2EE设计模式.doc

    - **合成模式(Composite)**:合成模式将对象组合成树形结构以表示部分-整体的关系,使客户端可以一致地处理单个对象和组合对象。比如,MM选择T恤、裙子和包包作为一套生日礼物,它们通过合成模式组合在一起。 - ...

    OO中对于23种设计模式的整理

    合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。 9. 装饰模式(Decorator Pattern) 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的...

    C#23种设计模式_示例源代码及PDF

    合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就 合成模式 是一个处理对象的树结构的模式。 合成模式把部分与整体的关系用树结构表示出来。 合成模 式使得客户端把一个个单独的...

    设计模式个人整理设计模式个人整理

    合成模式用于描述部分与整体的关系,如购买礼物(T恤、裙子和包包)的组合。它允许客户端将简单组件和复杂组件平等对待,简化了对树形结构对象的操作。 10. **装饰器模式**: 装饰器模式可以在不修改对象的基础上...

Global site tag (gtag.js) - Google Analytics