赞
踩
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
为了更好地理解抽象工厂模式,先引入两个概念:
优点:
缺点:
from abc import ABC, abstractmethod
# 抽象产品 - 按钮
class Button(ABC):
@abstractmethod
def click(self):
pass
# 抽象产品 - 文本框
class TextBox(ABC):
@abstractmethod
def input(self, text):
pass
# 具体产品 - Windows 按钮
class WindowsButton(Button):
def click(self):
print("Windows Button Clicked")
# 具体产品 - Windows 文本框
class WindowsTextBox(TextBox):
def input(self, text):
print(f"Windows TextBox input: {text}")
# 具体产品 - Mac 按钮
class MacButton(Button):
def click(self):
print("Mac Button Clicked")
# 具体产品 - Mac 文本框
class MacTextBox(TextBox):
def input(self, text):
print(f"Mac TextBox input: {text}")
# 抽象工厂
class GUIFactory(ABC):
@abstractmethod
def create_button(self):
pass
@abstractmethod
def create_textbox(self):
pass
# 具体工厂 - Windows 工厂
class WindowsFactory(GUIFactory):
def create_button(self):
return WindowsButton()
def create_textbox(self):
return WindowsTextBox()
# 具体工厂 - Mac 工厂
class MacFactory(GUIFactory):
def create_button(self):
return MacButton()
def create_textbox(self):
return MacTextBox()
# 客户端代码
def client(factory: GUIFactory):
button = factory.create_button()
textbox = factory.create_textbox()
button.click()
textbox.input("Hello World")
# 使用 Windows 工厂
print("Using Windows Factory:")
client(WindowsFactory())
# 使用 Mac 工厂
print("\nUsing Mac Factory:")
client(MacFactory())
抽象工厂模式是工厂方法模式的进一步延伸,我们从以下几点进行比较它们:
《设计模式的艺术》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。