python - 如何将单例和工厂设计模式与python结合起来?
问题描述
假设有几家出版社,每家出版了很多书我要处理很多记录,比如“出版社名称,书名”
我想通过唯一的名称(字符串)创建“Press”类,但只有不同的字符串才能产生“Press”类的不同实例。
所以,我需要一个像“工厂”这样的类工作,当记录包含新的印刷机时创建一个新实例,但如果已经存在同名的,它也可以作为单例工作。
解决方案
您可以创建一个具有唯一名称作为键和 Press 对象作为值的字典。这不需要是全局字典。您可以将它包装在这样的类中:
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()
为类方法,因为我认为这是您的想法。
推荐阅读
- react-native - 反应原生原生基础 ListItem touchableHighlightStyle
- javascript - 用于多种功能的导出模块
- javascript - 带有来自 C# 的动态数据的莫里斯图
- ms-word - OpenXML 跨列拆分表
- security - 基于 JWT 的身份验证/授权与 Microsoft Identity 2
- excel - 在工作簿之间复制工作表并覆盖当前工作表
- android - sdk 26 的 MediaBrowserServiceCompat startService()
- java - Bukkit - 我怎样才能让刷怪笼生成与猪不同的实体..?
- vba - 想要在 vba 中更改选定的 powerpoint 图表系列颜色
- reactjs - 将道具传递给路线