【Rust - Strategy / Policy 策略·模式】、【OOP - Dependency Inversion 依赖倒置·模式】、【Javascript - Callback Functon 回调函数·模式】,同属一类设计模式组合,即【Inversion of Control + Dependency Injection(控制反转 + 依赖注入)】,简称【IoC + DI】。
那么【IoC + DI】在 Rust 的技术落地,是怎样的?
相对于弱类型的 Js,强类型的 Rust:
1.借助 Trait method,约定 “回调函数” 的函数签名 — Js 没有类型,也就不需要书面地声明(回调)函数签名。所有技术细节,都以对 IoC 容器透明的方式被封装于此回调函数里。
2.借助 Trait 实现类的(私有)字段,从 IoC 容器外捕获变量 — Js 函数的天赋技能之一就是【捕获变量】,所以不用显示地写这类代码。这样从 DI 接口注入就不只是功能 “行为”,还有(独立于输入数据的)额外状态信息。
相对于玩转【堆】的 Java,Rust 还允许向 IoC 容器注入复杂数据类型的【栈】变量值,而无论该变量值是被【静态分派】还是【动态分派】。
所以,【IoC + DI】设计模式在 Rust 的技术落地,比 js 严谨,比 java 灵活。