23种设计模式介绍(Python示例讲解)(17)
2023-04-30 来源:飞速影视
在上述示例中,FileComponent 类是抽象组件,定义了组合中所有对象共有的行为。File 类是叶子组件,表示文件。Folder 类是容器组件,表示文件夹,它可以包含其他文件和文件夹。
客户端可以通过抽象组件对文件和文件夹进行操作,如列出文件和文件夹:
root = Folder("root")folder1 = Folder("folder1")folder2 = Folder("folder2")file1 = File("file1")file2 = File("file2")root.add(folder1)root.add(folder2)root.add(file1)folder1.add(file2)root.list()
在上述示例中,我们创建了一个根节点root,包含了两个文件夹folder1和folder2以及两个文件file1和file2。客户端通过root节点列出了整个文件树的结构。
4、装饰模式(Decorator)
装饰模式(Decorator)是一种结构型设计模式,它允许你在运行时为对象动态添加功能。装饰模式是一种替代继承的方式,它通过将对象放入包装器对象中来实现这一点。这种模式是开放封闭原则的一种具体实现方式。
在装饰模式中,有一个抽象组件(Component)类,它定义了基本的操作方法。有一个具体组件(ConcreteComponent)类,它实现了抽象组件类中定义的操作方法。还有一个装饰器(Decorator)类,它也实现了抽象组件类中定义的操作方法,并且它包含一个指向抽象组件类的引用。此外,还有一个具体装饰器(ConcreteDecorator)类,它扩展了装饰器类,以实现额外的功能。
装饰模式的核心思想是,在不改变原有类的情况下,通过包装原有类来扩展其功能。这使得我们可以在运行时动态地添加功能,而不需要在编译时修改代码。
以下是一个装饰模式的 UML 类图:
----------------------- ------------------ | Component |<-------| Decorator | ----------------------- ------------------ | operation() | | operation() | ----------------------- | setComponent() | | | ------------------- / | -------|----------------- | | | --------------------- --------------------- | ConcreteComponent | | ConcreteDecoratorA | --------------------- --------------------- | operation() | | operation() | --------------------- --------------------- | addedBehavior() | ---------------------
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号