我在用我实际遇到的问题学习模式。所以,对不起,有些太基本的问题。你知道吗
我有一个工厂,生产四种不同类型的产品:
class ProductFactory:
def product_a(self):
return ProductA()
def product_b(self):
return ProductB()
def product_c(self):
return ProductC()
def product_d(self):
return ProductD()
但是产品有点复杂。事实上,ProductA是使用两个不同的类构建的,因为它们是不同的数据源,必须以复杂的方式组合在一起才能生成有用的ProductA。你知道吗
所以,我怀疑:
我的ProductFactory中的product_a()方法负责处理这两个数据源,做所有必要的事情并最终构建整洁的ProductA可以吗?或者ProductA()不应该知道ProductA是如何使用相当大的业务逻辑装载的?你知道吗
例如,只有一个示例,myProductA看起来像:
class ProductFactory:
def __init__(self, data_source1=None, data_source2=None):
self.data_source1 = data_source1
self.data_source2 = data_source2
def product_a(self):
formated_data = self.data_source1.do_creepy_stuff()
messed_data = self.data_source2.mess_a_lot()
final_data = formated_data.update(messed_data)
return ProductA(final_data)
def product_b(self):
return ProductB()
if __name__ == "__main__":
data_source1 = DataSource1('my_file')
data_source2 = DataSource2('my_directory')
factory = ProductFactory(data_source1, data_source2)
product = factory.product_a()
如果这个想法是正确的,那么最好将数据源作为参数传递给product_a()方法,或者作为参数传递给工厂构造函数(如示例所示)?你知道吗
总的来说。。。让工厂知道如何从这些数据源执行方法(比如数据源1.do\u screeny\u stuff())我很困惑。。。我想我的数据源类的任何变化都可能污染我的工厂。你知道吗
但同时,我实际有一个产品a,它使用不同的数据源作为它的一部分,这些数据源必须在安装产品a之前进行操作,因为这些数据源也被与产品无关的软件的其他部分使用。你知道吗
所以,我真的很努力去理解处理这种情况的最佳方法,一个工厂似乎是最好的解决方案,但是。。。有人怀疑。。。你知道吗
谢谢你的帮助!!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐