Python实现抽象工厂模式示例
时间: 2023-11-05 21:58:34 浏览: 49
好的,以下是 Python 实现抽象工厂模式的示例:
```python
from abc import ABC, abstractmethod
# 抽象工厂类
class AbstractFactory(ABC):
@abstractmethod
def create_product_a(self):
pass
@abstractmethod
def create_product_b(self):
pass
# 具体工厂类 A
class ConcreteFactoryA(AbstractFactory):
def create_product_a(self):
return ProductA1()
def create_product_b(self):
return ProductB1()
# 具体工厂类 B
class ConcreteFactoryB(AbstractFactory):
def create_product_a(self):
return ProductA2()
def create_product_b(self):
return ProductB2()
# 抽象产品类 A
class AbstractProductA(ABC):
@abstractmethod
def operation_a(self):
pass
# 具体产品类 A1
class ProductA1(AbstractProductA):
def operation_a(self):
return "Product A1"
# 具体产品类 A2
class ProductA2(AbstractProductA):
def operation_a(self):
return "Product A2"
# 抽象产品类 B
class AbstractProductB(ABC):
@abstractmethod
def operation_b(self):
pass
# 具体产品类 B1
class ProductB1(AbstractProductB):
def operation_b(self):
return "Product B1"
# 具体产品类 B2
class ProductB2(AbstractProductB):
def operation_b(self):
return "Product B2"
# 客户端
class Client:
def __init__(self, factory: AbstractFactory):
self.product_a = factory.create_product_a()
self.product_b = factory.create_product_b()
def do_something(self):
print(self.product_a.operation_a())
print(self.product_b.operation_b())
# 使用 ConcreteFactoryA 创建产品
factory_a = ConcreteFactoryA()
client_a = Client(factory_a)
client_a.do_something()
# 使用 ConcreteFactoryB 创建产品
factory_b = ConcreteFactoryB()
client_b = Client(factory_b)
client_b.do_something()
```
希望能对您有所帮助!