IOC问题:运行时数据依赖类的抽象工厂太多

时间:2011-06-08 02:27:52

标签: dependency-injection inversion-of-control

我最近开始在我的一个项目中使用DI。对于运行时相关类,我创建了相应的Abstract工厂。遵循这种模式后,我最终得到了太多的抽象工厂,几乎每个班级都有一个。

在使用IOC时,最终会有太多的抽象工厂吗?

场景:假设我从数据库中获取“实体”对象。用户可以在此实体对象上执行10种不同的用例。对于每个用例,我都有一个不同的类来处理它。在某些情况下,给定的用例可能具有子用例组件,这些组件也可能需要实体对象。 由于这些类依赖于运行时实体对象,因此我必须为每个类创建抽象工厂。最后,我将构造指令连接到IOC容器中。

是否有其他方法可以做到这一点。我只觉得创建所有这些工厂是浪费时间,特别是当所有子类都依赖于同一个实体对象时。

我倾向于使用IOC容器为我的方案注册一个工厂/构建器类。该工厂将为我的场景创建所需的对象图。我认为IOC是帮助实现DI概念的工具。只要我通过自定义构建器/工厂观察DI,就不会一直使用IOC容器。

我想知道你们对这种方法的看法是什么?

1 个答案:

答案 0 :(得分:7)

听起来你正遭受过多的1:1界面。当这种情况发生时,通常表明人们应该停下来思考Reused Abstractions Principle

也许您可以重新设计界面,以便有less factories and more commands