dependency-injection - 了解干净架构中的“依赖注入框架是细节”
问题描述
当我阅读“干净架构”一书时,它说“架构师的目标是为系统创建一个形状,将策略识别为系统的最重要元素,同时使细节与该策略无关。这允许决策关于那些将被推迟和推迟的细节”。
然后它说数据库、依赖注入框架、Web 服务器等是这些细节的例子。
问题是:只要我为数据库创建接口,我就可以开发高级策略而无需承诺数据库等细节。但我不明白的是如何从高级策略代码中删除“依赖注入框架”,因为像 Spring 这样的 DI 框架负责创建和自动装配对象。
解决方案
如果您的 DI 框架仅使用需要更改您的更高策略才能运行的注释或其他机制,那么该框架不适合在干净的架构或任何其他不应严重依赖外部库的应用程序中用作 DI 工具.
但是例如 Spring 可以在没有注释的情况下使用。
首先,在干净的架构中不需要使用 DI 框架。您可以在最低的“框架和驱动程序”层轻松构建适配器、用例交互器等,并通过构造函数或设置器手动注入它们的依赖项。没有其他层会知道它们的依赖项是如何注入的。
使用 DI 框架时,只需要外部解析输入适配器,其他依赖将由 DI 框架解析和注入。这意味着您可以在 DI 框架之间进行更改,甚至可以在没有任何框架的情况下进行注入,而不会影响除最外层的“框架和驱动程序”层之外的任何其他内容。
推荐阅读
- laravel - Laravel 初学者使用模态删除数据
- python - 在带有实际数据的图上添加回归线
- android - Android okhttp - POST 请求:将响应转换为正确的 JSONArray 时出现问题
- c++ - 重载 C++
- java - 使用查询的结果作为条件在使用 Mysql 的 java swing 中设置 jtextField 的背景
- c# - Unity2D:在与敌人碰撞时将玩家推开
- java - ifPresent 检查后如何返回值
- python - 将 Django 部署到 Elastic Beanstalk,/opt/python 不存在
- python - 如何从类内动态分配类方法?
- postgresql - 在 aws(ubuntu) 中安装 psycopg2 时出错,如何解决?