写点什么

Rust 如何实现依赖注入?

作者:非凸科技
  • 2022 年 6 月 30 日
  • 本文字数:501 字

    阅读完需:约 2 分钟

要应用“依赖注入”模式,你需要遵循两个简单的准则:

1.将对象的构造与使用分开。在实践中,停止在构造函数中创建对象,而是将这些对象作为输入参数。

2.使用接口而不是具体类型作为构造函数的参数。通过这种方式,接收方没有接收接口的具体类型,因此可以提供不同的实现。

依赖注入不仅是可测试性的关键,也是一个很好的设计原则,因为它保持了系统各部分松散耦合。最好的一点是依赖注入是一个简单的概念,不需要花哨的框架。

至于如何定义通用接口,技术上取决于你选择的语言。在 c++中,可以定义纯抽象类;在 Java, Go 和 c#中,可以定义接口;在 Rust 中,使用 Trait。

那么,如何使用 Trait 来实现依赖注入?当依赖注入模式被正确应用时,一个库 crate 就会体现出:

(1)Trait 代表一个重量级对象;

(2)实现这些 Trait 的对象集合;

(3)通过泛型 Trait,函数使用这些对象;

然后,库的使用者实例化他们需要的特定对象,将它们连接在一起以创建依赖关系图,并将它们提供给库公开的通用业务逻辑函数。

不过,在 Rust 中使用 trait 进行依赖注入的关键问题是,函数签名中引用的任何类型必须至少和函数本身一样可见。这意味着,如果 Trait 是 public 的,那么任何特征函数引用的任何类型也必须是 public 的。

用户头像

非凸科技

关注

追求卓越算法,赋能量化交易 2022.02.22 加入

专注于智能算法交易领域的研究和开发

评论

发布
暂无评论
Rust 如何实现依赖注入?_依赖注入_非凸科技_InfoQ写作社区