2013-03-22 72 views
0

每当我看到工厂设计模式,它总是有一个简单的new FactoryName.build()方法。当创建对象时,它们具有依赖性,但在我的情况下,我有一个现有的项目,我在运行时比在初始化时运行更多(考虑在现有的复杂代码库中,而不是简单的工厂设计示例)。因此,为了注入所需的依赖关系,我的build的实现不可能仅实现为return new Blah(new This(), new That())工厂设计模式禁止?

所以如果我想传递的参数来构建(如:build(SomeENUM type),和/或甚至自动检测内部构建依赖关系(如:some logic to auto-detect SomeENUM type)是一方或双方的固有错误的

回答

0

的“?创建”像(出厂/编译)抽象 对象实例化的过程模式由隐藏如何对象被创建并做出独立的对象创建过程的系统。

如果我没有理解你的问题的权利,你不能与SomeENUM type“玩”内工厂过程。这是工厂模式的主要目标是使像黑匣子全部过程

我把打印屏幕从好的文件:

enter image description here enter image description here

+0

好了,来电者一个工厂应该声明预先考虑它想要的实现类型。比喻说,它应该从餐厅菜单中下订单,而不要问服务员什么是好吃的? – Zombies 2013-03-22 07:44:07

+1

的权利,但如果你使用抽象工厂模式,你可以决定去哪家餐馆(改变菜单)。见上面的例子。顺便说一句,Build Factory是基于你传递给工厂启动的参数。而在门的另一边,你会得到产品。 – 2013-03-22 07:54:08