精通设计模式PPT教案 chapter11 合成模式
- 格式:pptx
- 大小:489.16 KB
- 文档页数:19
设计模式~合成模式合成模型模式(Composite)属于队形的结构模式,有时⼜叫做部分-整体模式(Part-Whole)。
合成模式将对象组织到树结构中,可以⽤来描述整体与部分的关系。
合成模式可以使客户端将单纯元素与复合元素同等看待。
树有向树结构的种类:从上向下从下向上双向的这⾥仅给出由上向下的⽰意图⼀个树结构由两种节点组成:树枝节点和树叶节点。
树枝节点可以有⼦节点,⽽⼀个树叶节点不可以有⼦节点。
在信息系统⾥,树枝节点所代表的构件常常⽤作树叶节点所代表的构件的容器。
合成模式合成模式把部分和整体的关系⽤树结构表⽰出来。
从这个简略类图,可以看出,涉及三个⾓⾊:抽象构件⾓⾊(Component),树叶构件⾓⾊(Leaf),树枝构件⾓⾊(Composite)分成两类:安全式的合成模式透明式的合成模式透明⽅式,会在Component⾥⾯声明所有的⽤来管理⼦类对象的⽅法,包括 add(), remove() , 以及 getChild() ⽅法。
这样做的好处是所有的构件类都有相同的接⼝。
客户端可以同等对待所有的对象。
安全⽅法安全⽅式,是在Composite 类⾥⾯声明所有的⽤来管理⼦类对象的⽅法。
这样的做法是安全的做法,因为树叶类型的对象根本就没有管理⼦类对象的⽅法,因此,如果客户端对树叶类对象使⽤这些⽅法时,程序会在编译时期出错。
缺点是,不够透明,因为树叶类和合成类将具有不同的接⼝。
安全式的合成模式抽象构件⾓⾊(Component):这是⼀个抽象⾓⾊,它给参加组合的对象定义出公共的接⼝及其默认⾏为,可以⽤来管理所有的⼦对象。
在安全式的合成模式⾥,构件⾓⾊并不定义出管理⼦对象的⽅法,这⼀定义由树枝构件对象给出。
树叶构件⾓⾊(Leaf): 树叶对象是没有下级⼦对象的对象,定义出参加组合的原始对象的⾏为。
树枝构件⾓⾊(Composite): 代表参加组合的有下级⼦对象的对象。
树枝构件类给出所有的管理⼦对象的⽅法,如 add(), remove() 以及 components()的声明。