作者鍾愛 Struts、iBatis、Spring 等 Java 框架,但偏好 .NET 技術棧。對比兩者生態差異,闡述 Struts 核心價值與 IOC/依賴注入在降低耦合中的關鍵作用,並預告自研 .NET 版 Struts 框架 nstruts 2.0。
// 1. 硬編碼依賴:B 強依賴 A
class B { A a = new A(); }
// 2. 工廠模式:依賴抽象,但擴展仍需改工廠代碼
interface IA {}
class B { IA a = Factory.createA(); }
// 3. 依賴注入:配置文件注入,零代碼修改擴展
class B {
private IA a;
public void setA(IA a) { this.a = a; }
}
// struts-config.xml / applicationContext.xml
// 想換 C 只改 ref
Setter 如同空心球體上的小孔,配置文件將所需依賴「注入」其中。Struts 配置文件天然承擔 DI 容器角色,Action 實例化、屬性注入、生命週期管理由框架接管。
自研 .NET 版 Struts 框架,改進重大:
發布前可先研究 nstruts 1.0 理解基礎架構。期待在 .NET 世界復現 Struts 的優雅與生產力。