23种设计模式介绍(Python示例讲解)(8)
2023-04-30 来源:飞速影视
其中,AbstractFactory 是抽象工厂类,它定义了一组用于创建产品的抽象方法;ConcreteFactory1 和 ConcreteFactory2 是具体工厂类,它们分别实现了抽象工厂类中定义的抽象方法,用于创建一组具体产品;ProductA1、ProductA2、ProductB1 和 ProductB2 是抽象产品类,它们定义了一组用于产品的抽象方法。
下面是一个使用抽象工厂模式的例子,假设我们要开发一个跨平台的图形用户界面,包括按钮、文本框和选择框等控件,我们可以先定义一组抽象控件类和抽象工厂类:
from abc import ABC, abstractmethodclass Button(ABC): @abstractmethod def paint(self): passclass TextBox(ABC): @abstractmethod def paint(self): passclass CheckBox(ABC): @abstractmethod def paint(self): passclass GUIFactory(ABC): @abstractmethod def create_button(self) -> Button: pass @abstractmethod def create_text_box(self) -> TextBox: pass @abstractmethod def create_check_box(self) -> CheckBox: pass
然后我们可以定义一组具体的控件类和工厂类,比如 Windows 控件和 Mac 控件:
class WindowsButton(Button): def paint(self): print("Painting a Windows style button")class WindowsTextBox(TextBox): def paint(self): print("Painting a Windows style text box")class WindowsCheckBox(CheckBox): def paint(self): print("Painting a Windows style check box")class WindowsFactory(GUIFactory): def create_button(self) -> Button: return WindowsButton() def create_text_box(self) -> TextBox: return WindowsTextBox() def create_check_box(self) -> CheckBox: return WindowsCheckBox()class MacButton(Button): def paint(self): print("Painting a Mac style button")class MacTextBox(TextBox): def paint(self): print("Painting a Mac style text box")class MacCheckBox(CheckBox): def paint(self): print("Painting a Mac style check box")class MacFactory(GUIFactory): def create_button(self) -> Button: return MacButton() def create_text_box(self) -> TextBox: return MacTextBox() def create_check_box(self) -> CheckBox: return MacCheckBox()
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号