【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灵活。