今天稍微说一下组合模式。
这边整理了一下有用的资料,想要的可以戳点这里!点这里!暗号:CSDN。
组合模式
首先组合式模式是什么呢?
"组合模式”(Composite Pattern)可用来统合类体系中的两种对象:一种对象能够包含 体系中的其他对象,另一种不能。前者叫做“组合体”(composite),后者叫做“非组合体” (noncomposite),两者统称“组件,, (component)o按照传统的实现方式,这两种组件(一种是 单个对象,一种是对象群集)所对应的类都继承自同一个基类。.组合体与非组合体对象都具 备同一套“核心方法”(core method),此外,组合体对象还有用于增加、移除、遍历子对象 的其他方法。
该模式常用于实现Inkscape等绘图程序,这种程序需要有’群组”(group)与“解除群组” (ungroup)功能。用户可选取一批组件,并对其执行群组或解除群组操作,而这些组件中, 有的是单个元素(比如矩形),有的是组合体(比如由各种图形所构成的脸谱)。
现在就来看个实际的例子。我们在main()函数里创建一些对象,有单个元素,也有组 合体,然后,把它们全都打印出来。下面这段代码选自stationeryl.py,代码后面是程 序所输岀的信息。
def main():
pencil = Simpleltem("Pencil", 0.40)
ruler = Simpleltem("Ruler", 1.60)
eraser = Simpleltem("Eraser", 0.20)
pencilSet = Compositeltem("Pencil Set", pencil, ruler, eraser) box = Simpleltemf"Box", 1.00) boxedPencilSet = Compositeltem("Boxed Pencil Set", box, pencilSet) boxedPencilSet.add(pencil) for item in (pencil, ruler, eraser, pencilSet, boxedPencilSet)