Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 洋葱架构:工厂实现的位置?_Design Patterns_Architecture_Dependency Injection_Onion Architecture - Fatal编程技术网

Design patterns 洋葱架构:工厂实现的位置?

Design patterns 洋葱架构:工厂实现的位置?,design-patterns,architecture,dependency-injection,onion-architecture,Design Patterns,Architecture,Dependency Injection,Onion Architecture,我来建立新的“企业解决方案” 所以我决定使用“洋葱架构”,因为我想要灵活的架构 但我对“依赖解决”这个问题还不熟悉 据我所知,我应该将工厂“实现”放在这个层中,这个层引用了所有其他层 然后我想知道当DependencyResolution层和UI层中的工厂实现未引用“DependencyResolution层”时,如何在“UI层”中创建IFactory的新实例 编辑:: 谢谢埃里克先生 但在我看到许多这些链接之后,当我想将实现“注册”到它们的“接口”时,我仍然有问题,因为我无法在UI项目中执行

我来建立新的“企业解决方案”

所以我决定使用“洋葱架构”,因为我想要灵活的架构

但我对“依赖解决”这个问题还不熟悉

据我所知,我应该将工厂“实现”放在这个层中,这个层引用了所有其他层

然后我想知道当DependencyResolution层和UI层中的工厂实现未引用“DependencyResolution层”时,如何在“UI层”中创建IFactory的新实例


编辑::

谢谢埃里克先生

但在我看到许多这些链接之后,当我想将实现“注册”到它们的“接口”时,我仍然有问题,因为我无法在UI项目中执行类似的操作:

kernel.Bind<ITaxCalculator>()
      .To<TaxCalculator>()
      .WithConstructorArgument("rate", .2M);
kernel.Bind()
.至()
.有施工争议(“费率”,0.2M);

因为UI项目无法访问TaxCalculator的“实现”。

我认为最好的解决方案是使用依赖项容器(也称为IOC容器)来解析引用,如Castle Windsor或Unity(如果您在.NET上)。它们使您能够配置依赖项解析,而无需参考UI层中的实际实现

编辑:部分链接:


+1谢谢,但UI项目没有提及实施项目,那么如果我无法在UI项目中实现“实施”,我如何进行“解决”这是DI容器可以为您解决的问题。例如,您可以在某些DI容器中的配置文件中执行此操作(那里没有硬引用)。这难道不能解决您的问题吗?如果我可以从“配置”文件访问外部库,我想可以。请建议我使用哪个DI容器,如果可能的话,请举例说明。当然这里有不同的首选项,我不能为您决定:)。然而,温莎城堡应该得到充分的测试和认可。您可以在此处看到如何使用config配置接口到类映射的示例: