23种设计模式介绍(Python示例讲解)(16)
2023-04-30 来源:飞速影视
Rectangle filled with Green
代码讲解:
在这个示例中,Shape是抽象类,它包含了一个颜色属性和draw方法。Color是实现类,它包含了一个fill方法。RedColor和GreenColor是Color的具体实现类,它们分别实现了fill方法返回红色和绿色。Bridge是桥梁接口,它包含了一个对Color的引用。Circle和Rectangle是具体桥梁类,它们继承了Bridge,实现了draw方法,将调用转发给实现类的fill方法。在示例的最后,实例化了RedColor和GreenColor,并分别传递给Circle和Rectangle作为参数。然后调用了draw方法,输出了Circle和Rectangle的颜色填充。
通过桥接模式,将抽象部分和实现部分分离开来,可以使得它们可以独立地变化而互不影响。这样就可以更加灵活地组合不同的抽象部分和实现部分,从而实现更加复杂的功能。
3、组合模式(Composite)
组合模式(Composite)是一种结构型设计模式,它允许你将对象组合成树形结构来表示整体-部分关系,使得客户端可以统一地处理单个对象和组合对象。
该模式包含以下几个角色:
抽象组件(Component):定义了组合中所有对象共有的行为,并规定了管理子组件的方法。叶子组件(Leaf):表示组合中的单个对象,叶子节点没有子节点。容器组件(Composite):表示组合中的容器对象,容器节点可以包含其他容器节点和叶子节点。客户端(Client):通过抽象组件操作组合对象。
优点:
使用组合模式可以使得客户端可以像处理单个对象一样处理组合对象。同时也方便了新增或删除子组件。该模式通常应用于处理树形结构数据或者嵌套的对象结构。
以下是一个简单的组合模式的示例,假设我们要处理一些文件和文件夹,文件夹可以包含其他文件和文件夹,我们可以使用组合模式来表示它们之间的整体-部分关系:
from abc import ABC, abstractmethodclass FileComponent(ABC): @abstractmethod def list(self): passclass File(FileComponent): def __init__(self, name): self.name = name def list(self): print(self.name)class Folder(FileComponent): def __init__(self, name): self.name = name self.children = [] def add(self, component): self.children.append(component) def remove(self, component): self.children.remove(component) def list(self): print(self.name) for child in self.children: child.list()
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号