【发布时间】:2010-10-07 21:58:26
【问题描述】:
我正在使用构建器模式来分离一堆不同的配置可能性。基本上,我有一堆名为 ID 的类(类似于 ID12345)。这些都继承自基础构建器类。在我的脚本中,每次运行此应用程序时,我都需要为每个类(大约 50 个)实例化一个实例。所以,我想看看是否不做这样的事情:
ProcessDirector = ProcessDirector()
ID12345 = ID12345()
ID01234 = ID01234()
ProcessDirector.construct(ID12345)
ProcessDirector.construct(ID01234)
ID12345.run()
ID01234.run()
我可以做这样的事情吗(我知道这行不通):
IDS = ["ID12345", "ID01234"]
ProcessDirector = ProcessDirector()
for id in IDS:
builder = id() #some how instantiate class from string
ProcessDirector.construct(builder)
builder.run()
这样,当我将来需要添加一个新的时,我所要做的就是将 id 添加到 IDS 列表中,而不是在整个代码中添加新的 ID。
编辑
根据数据的来源,似乎有一些不同的意见。这些 ID 被输入到其他人无权访问的文件中。我没有从命令行读取字符串,我希望将来在添加新 ID 时能够做的改动很少。
【问题讨论】:
-
这些 ID 类是否与循环在同一个文件中,还是从其他地方导入?
-
这不是那个的重复,这是一个python问题,而不是一个java问题,你引用的问题是询问python中是否存在一个函数,它存在于java中,后面几乎没有解释,记住问题是人们如何找到它,而不是答案,所以仅仅因为另一个问题中存在一个可以回答这个问题的答案并不意味着人们会找到它,除非他们用 Java 来思考这个问题,比如该问题的OP。
标签: python design-patterns reflection