如何将单例和工厂设计模式与 python 相结合?

how to combine singleton and factory design pattern with python?

假设有几家出版社,每家出版了多本书 我将处理许多记录,例如 'press name, book name'

我想通过唯一的名称(字符串)创建 class 'Press',但只有不同的字符串才能生成 class 'Press'.[=11 的不同实例=]

所以,我需要一个像 'factory' 一样的 class,当一条记录包含一个新的印刷机时创建一个新实例,但如果已经存在具有相同的印刷机,它也可以作为单例工作名字。

您可以创建一个字典,将唯一名称作为键,将 Press 对象作为值。这不需要是一个全球性的命令。你可以像这样用 class 包裹它:

class Press:
    def __init__(self, name):
        self.name = name
        self.books = []

class PressManager:
    presses = {}

    @classmethod
    def get_press(cls, name):
        if name not in cls.presses:
            cls.presses[name] = Press(name)
        return cls.presses[name]


example_press = PressManager.get_press("Test")

我将 get_press() 实现为 class 方法,因为我认为这就是您的想法。