郑统京 发表于 2023-7-22 13:39:35

随笔十二 :python中的工厂模式

在Python中,工厂模式(Factory Pattern)是一种软件设计模式,它提供了一种创建对象的方式,将对象的创建与使用代码分离开来。工厂模式通过定义一个共同的接口来创建对象,
但具体的对象创建逻辑由子类或工厂类来实现。

工厂模式的主要目的是将对象的创建过程封装起来,使得客户端代码无需关注实际的对象创建细节。当需要创建不同类型的对象时,客户端只需要通过工厂类或工厂方法来获取相应类型的对象实例,
而无需直接调用具体的构造函数。

工厂模式通常包含以下几个角色:

抽象产品(Abstract Product):定义了具体产品类的共同接口。
具体产品(Concrete Product):实现了抽象产品接口,是工厂模式所创建的目标对象。
抽象工厂(Abstract Factory):定义了创建抽象产品对象的接口。
具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体产品对象。
使用工厂模式的好处是可以隐藏对象创建的细节,使得客户端代码与具体对象的创建过程解耦。这样可以提高代码的可维护性、扩展性和灵活性。另外,工厂模式也符合开闭原则,
当需要新增一种产品时,只需要增加相应的具体产品和具体工厂类即可,而无需修改客户端代码。

下面是一个简单的示例代码,演示了如何使用工厂模式创建不同类型的电脑对象:
class Computer:
    def __init__(self):
      self.name = None
      self.cpu = None
      self.memory = None
   
    def __str__(self):
      return f"Computer: {self.name}, CPU: {self.cpu}, Memory: {self.memory}"

class DellComputer(Computer):
    def __init__(self):
      self.name = "Dell"
      self.cpu = "Intel i7"
      self.memory = "16GB"

class HPComputer(Computer):
    def __init__(self):
      self.name = "HP"
      self.cpu = "AMD Ryzen 5"
      self.memory = "8GB"

class ComputerFactory:
    @staticmethod
    def create_computer(brand):
      if brand == "Dell":
            return DellComputer()
      elif brand == "HP":
            return HPComputer()
      else:
            raise ValueError("Invalid brand")

# 客户端代码
dell_computer = ComputerFactory.create_computer("Dell")
hp_computer = ComputerFactory.create_computer("HP")

print(dell_computer)# 输出:Computer: Dell, CPU: Intel i7, Memory: 16GB
print(hp_computer)    # 输出:Computer: HP, CPU: AMD Ryzen 5, Memory: 8GB
在上述示例中,Computer是抽象产品类,DellComputer和HPComputer是具体产品类,ComputerFactory是抽象工厂类。客户端通过调用
ComputerFactory的create_computer方法来获取相应品牌的电脑对象,而无需直接创建具体产品对象。
页: [1]
查看完整版本: 随笔十二 :python中的工厂模式