我最初设计了一个简单的工厂"使用类型检查和其他方法来找出要生成的对象类型。然而,根据我的直觉,越往往这条道路越多,它看起来可能是一个糟糕的设计,我应该使用常量来产生适当的对象。我想我的问题是,这是一个糟糕的设计,我应该重写它吗?任何建议都非常感谢。
class WidgetFactory:
@staticmethod
def createWidget(raw_widget):
if isinstance(raw_widget, list):
return ListWidget(raw_widget)
elif FileWidget.isSupportedFile(raw_widget):
return FileWidget(raw_widget)
elif DBWidget.isSupportedDB(raw_widget):
return DBWidget(raw_widget)
答案 0 :(得分:1)
与所有事情一样,这取决于。
如果只有这三种类型,那可能就行了。如果你不得不继续添加更多类型,那么它可能是一个糟糕的设计选择。
对每种类型使用不同的方法会产生同样的问题,因为您需要为每种类型添加方法。
如果您以后需要添加更多类型,则可以使用AbstractFactory
或ChainOfResponsiblity
或类似内容来查找要使用的相应实现。