10.10
实验10:组合模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解组合模式的动机,掌握该模式的结构;
2、能够利用组合模式解决实际问题。
[实验任务一]:组合模式
用透明组合模式实现教材中的“文件夹浏览”这个例子。
实验要求:
1.
2.提交源代码;
class Component:
def __init__(self, name):
self.name = name
def add_component(self, component):
pass
def remove_component(self, component):
pass
def get_child(self, depth):
pass
class Leaf(Component):
def __init__(self, name):
super().__init__(name)
def add_component(self, component):
print("can't add")
def remove_component(self, component):
print("can't remove")
def get_child(self, depth):
print('-' * depth + self.name)
class Composite(Component):
def __init__(self, name):
super().__init__(name)
self._components = []
def add_component(self, component):
self._components.append(component)
def remove_component(self, component):
self._components.remove(component)
def get_child(self, depth):
print('-' * depth + self.name)
for component in self._components:
component.get_child(depth + 2)
# 主程序
if __name__ == "__main__":
root = Composite("root")
leaf1 = Leaf("A")
leaf2 = Leaf("B")
root.add_component(leaf1)
root.add_component(leaf2)
lay2 = Composite("AA")
leaf4 = Leaf("BB")
lay2.add_component(leaf4)
lay1 = Composite("CC")
leaf3 = Leaf("C")
lay1.add_component(leaf3)
lay1.add_component(lay2)
root.add_component(lay1)
root.get_child(1)
print()
lay1.get_child(1)
print()
lay2.get_child(1)
# 垃圾回收在Python中由GC自动处理,因此不需要手动释放内存
3.注意编程规范。
浙公网安备 33010602011771号