Design patterns 以工厂模式进行类型检查可以吗?
我最初设计了一个“简单工厂”,使用类型检查和其他方法来确定生产什么样的对象。然而,凭我的直觉,我越是走这条路,就越觉得这可能是一个糟糕的设计,我应该使用常量来生成适当的对象。我想我的问题是,这是一个糟糕的设计,我应该重写它吗?任何建议都将不胜感激Design patterns 以工厂模式进行类型检查可以吗?,design-patterns,factory-pattern,Design Patterns,Factory Pattern,我最初设计了一个“简单工厂”,使用类型检查和其他方法来确定生产什么样的对象。然而,凭我的直觉,我越是走这条路,就越觉得这可能是一个糟糕的设计,我应该使用常量来生成适当的对象。我想我的问题是,这是一个糟糕的设计,我应该重写它吗?任何建议都将不胜感激 class WidgetFactory: @staticmethod def createWidget(raw_widget): if isinstance(raw_widget, list):
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)
和所有事情一样,这要看情况而定 如果只有这3种类型,可能就可以了。如果您必须不断添加更多类型,那么这可能是一个糟糕的设计选择 为每种类型使用不同的方法有相同的问题,因为您需要为每种类型添加方法 如果以后需要添加更多类型,可以使用
AbstractFactory
或chainofresponsibility
或类似的方法来找到要使用的适当实现