Fluent interface
上一篇文章我使用到了Fluent interface這個特性,但是這一點忘了交代了,不好意思...補上!
先來看段代碼:
咋看上去,可能會有些不習慣,但是再仔細看,又會覺得表意很清楚,能夠很順暢的把這段代碼閱讀下來。這個特性叫做Fluent interface(我還不清楚中文統一的翻譯是什麼),具體可以參見Martin Fowler的http://martinfowler.com/bliki/FluentInterface.html一文,這個概念也是Martin Fowler最先提出來的。
下面繼續講述Unity支持的依賴注入的另外兩種用法。
設值注入
下面是我們的目標類PropertyInjection。可以看到,在PropertyInjection類中的兩個屬性MyOrder和MyLogger都打上了Dependency的標簽。Unity容器會根據這些屬性上的標簽為目標類注入所需的對象。
下面是我們的測試代碼。首先,我們建立容器,然後在容器中注冊了IOrder和ILogger的具體類,同時將PropertyInjection注冊為IOrderWithLogging的具體類。
同樣,在這裡,我們將CommonOrder注冊為單例,並為它的單實例的Discount賦值為0.95,這樣做的目的是為了檢驗取出的IOrder的具體類為我們先前的注入到容器的CommonOrder類。
下面是輸出結果。
方法調用注入
下面是我們的目標類MethodCallInjection。這次我們是在方法Inject上打了InjectMethod標簽,Unity容器會根據這些方法上的標簽為目標類注入所需的對象。
下面是我們的測試代碼。與前面的類似,不再重復了。
下面是輸出結果。