Configuration Pattern : 配置模式

IoC? Dependency Injection? No, Configuration Pattern!


IoC 這個過於tricky的名字理所當然的引起困惑, Martin同學取了個自以爲高明的"Dependency Injection", 實在是半斤八兩, 五十步笑百步, 其實更大範圍上, 它們都是"Configuration Pattern"的一種實現. (Configuration Pattern, 配置模式, 我起的名字, 自娛自樂, 如有雷同, 所見略同)

Engine + Configuration.

搜一下你的項目, 或者常用的開源項目, 如果能同時搜到"Engine"結尾的類和"Configuration"結尾的類, 那麼這個項目很可能用到了"Configuration Pattern"

我用過的開源項目中, Apache Axis就使用了引擎+配置的模式

我做過的一個工作流項目中, 也使用了引擎+配置的模式


當然, 傳統的讀取配置和 Dependency Injection 還是不太一樣的; 前者通常會有一些 getAbc( )之類的方法, 類似IoC中 getObject(objectId), getBean(beanId)之類的調用, 但Dependency Injection 更靈活的做法是通過Setter或Ctor直接注入, 你就不需要自己去調用 getter 方法了. 前者主要是配置一些簡單屬性,後者通常將配置擴展到對象

Algorithm + Functor

其實更大範圍上,  Engine + Configuration 的模式, 也是 Algorithm + Functor 模式的一種應用; 冒泡排序的算法是一樣的, 結果只取決於你提供的比較函數; 你提供了比較年齡和比較姓名兩個不同的Functor, 那麼作用在冒泡排序這同一個Algorithm上, 就能得到兩種結果.

參數化

其實最大範圍上, 不就是參數嗎? IoC, Dependency Injection, Configuration, Functor, 不就是"參數"這種思想的應用嗎. (這就多餘了, 沒意思了)

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章