4

我想编写一个工厂来实例化一个具体类并将其接口返回给客户端。通过这种方式,我可以将客户端与直接依赖于具体类解耦。但是,同时我不希望工厂依赖于具体类。我可以使用反射来满足我的需要,但在这样做之前我想知道这是否是一个好习惯。

4

3 回答 3

10

没有更多细节很难说,但我通常希望工厂实现依赖于它创建实例的具体类。在我看来,这是一种完全自然的依赖。

如果你想让它成为一个非常通用的工厂,它本质上正是因为它使用反射来增加价值——本质上是做大多数 IoC 容器所做的一小部分——那很好;但如果它是一种特定类型的工厂,那么我只会接受依赖。它可能会导致代码更易于理解和测试,并且效率更高。

于 2012-10-08T06:26:29.770 回答
0

是的,您的方法将是很好的做法。但是已经有一些框架可以为你工作。请参阅MEF框架。

于 2012-10-08T06:30:59.527 回答
0

是的,你的方法很好,我认为它没有任何问题。但是,与其花时间去做,不如使用一些已经存在的框架。

可以考虑Spring Framework 的 IOC 模块

于 2012-10-08T07:01:15.370 回答