首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

三十五:合成形式

2012-12-26 
三十五:合成模式合成模式是对象的结构模式,有时又叫做部分-整体模式。 一个基于继承的类型的等级结构便是一

三十五:合成模式
合成模式是对象的结构模式,有时又叫做部分-整体模式。
一个基于继承的类型的等级结构便是一个树结构,一个基于合成的对象结构也是一个树结构,本章将要介绍的合成模式也是一个处理对象的树结构的模式。

一:有向树结构的种类
(A)由上向下的树图---每一个树枝节点都有箭头指向它的所有的子节点,从而一个客户端要求一个树枝节点给出所有的子节点,而一个节点却不知道它的父节点。
(B)由下向上的树图---在一个由下向上的树图中,每一个节点都有箭头指向它的父节点,但是一个父节点却不知道其子节点。
(C)双向的树图

二:安全式和透明式的合成模式
合成模式涉及到三个角色:
(A)抽象构件(Component角色):这是一个抽象角色,它给参加组合的对象规定一个接口,这个接口给出共有的接口及其默认的行为
(B)树叶构件(Leaf)角色:代表参加组合的树叶对象
(C)树枝构件(Composite)角色:代表参加组合的有子对象的对象,并给出树枝构件对象的行为
合成模式根据所实现接口的区别分为两种形式,分别称为安全式和透明式。透明式在Component里面声明了所有的用来管理子类对象的方法,包括add(),remove和getChild方法,这样做的好处是所有的构件类都有相同的接口.安全式是在Composite类里面声明管理子类对象的方法.

三:下面是安全式的合成模式的源代码

package cai.milenfan.basic.test; //Line是一个树中构件,没有任何的子对象,因此不提供管理子对象聚集的方法public class Line extends Graphics{ public void draw() { //write your code here } } 


//长方形,圆形的实现和Line的一样

六:awt库中的例子
由于awt和swing的图形界面构件是建立在awt库中的Container类和Component类上的,Button和Checkbox是树叶型的构件,而Container则是树枝型的构件.在Container类中,有操作聚集的方法,而在Component类中则没有这样的方法,这就是说awt中使用的合成模式是安全形式的合成模式.
在下面的情况下应当考虑使用合成模式:
(1)需要描述对象的部分和整体的等级结构
(2)需要客户忽略个体构件和组合构件的区别.
优点:可以很容易地增加新种类的构件。
缺点:使用继承的方法来增加新的行为很困难

热点排行