博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
合成模式
阅读量:5937 次
发布时间:2019-06-19

本文共 1498 字,大约阅读时间需要 4 分钟。

hot3.png

一.相关例子:

文件系统 ,java.awt.Component

二.UML图:

三.实现方式:

两者的区别在于将所有子类管理方法(诸如add(),remove(),getChild()等方法)放在哪

1.安全式:在Composite类中声明了所有的子类管理方式,可惜这种方法不够透明,Leaf类和Composite类不具有相同的接口

2.透明式:在Component中声明了所有的子类管理方法,可惜这种方法不安全,因为让Leaf"有机会"去处理那些他不该执行的方法,诸如getChild();

四.角色和安全式的实现代码:

1.抽象构件(Component):

package com.se.design.component;/* * 这里实现的是安全式的合成模式 * */public interface Component {		/*	 * 返回自己 	 * */	public Composite getSelf();	/*	 * Leaf和Composite共有方法	 * */	public void commonMethod();}

2.树枝构件(Composite):

package com.se.design.component;import java.util.Enumeration;import java.util.Vector;public class Composite implements Component {	// 存放了自己所有的子节点	Vector
components = new Vector
(); @Override public Composite getSelf() { return this; } @Override public void commonMethod() { System.out.println("I'm Composite"); Enumeration
enumeration = components.elements(); while (enumeration.hasMoreElements()) { ((Component) enumeration.nextElement()).commonMethod(); } } public void add(Component comoponent) { this.components.add(comoponent); } public void remove(Component component) { this.components.remove(component); }}

3.树叶构件:

package com.se.design.component;public class Leaf implements Component {	@Override	public Composite getSelf() {		// TODO Auto-generated method stub		return null;	}	@Override	public void commonMethod() {		// TODO Auto-generated method stub		System.out.println("I'm Leaf");	}}

毕!

转载于:https://my.oschina.net/vfan140/blog/55170

你可能感兴趣的文章
Silverlight 5 深入理解 - TechEd2011葡萄城讲师课程
查看>>
js 选择 checkbox
查看>>
What is The Rule of Three?
查看>>
使用HTML5画布实现的超棒javascript动画仪表板:gauge.js
查看>>
node.js入门 - 2.创建一个简单聊天室
查看>>
For tomorrow's English test
查看>>
内容激活码jsp发送email
查看>>
ios 打电话结束返回到应用中
查看>>
当下全球最炙手可热的八位少年创业者
查看>>
JQuery 表单校验插件 validate 使用纪录
查看>>
开源项目与许可证
查看>>
已释放的栈内存
查看>>
MySQL字符串函数substring:字符串截取
查看>>
ystep jQuery流程、步骤插件
查看>>
JQuery+ajax+jsonp 跨域访问
查看>>
现代软件工程 第七章 【MSF】练习与讨论
查看>>
Android网络之数据解析----SAX方式解析XML数据
查看>>
Java递归列出所有文件和文件夹
查看>>
[关于SQL]查询成绩都大于80分的学生
查看>>
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>