Changes between Version 5 and Version 6 of waue/2011/spring


Ignore:
Timestamp:
Aug 24, 2011, 5:31:22 PM (13 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2011/spring

    v5 v6  
    145145 == Type 2 IoC : Setter injection ==
    146146
    147 BusinessObject 依賴於實際的 FloppyWriter,為了讓 BusinessObject 獲得重用性,不讓 BusinessObject 直接依賴於實際的 FloppyWriter,而是依賴於抽象的介面
     147BusinessObject 依賴於實際的 FloppyWriter,為了讓 BusinessObject 獲得重用性,不讓 BusinessObject 直接依賴於實際的 FloppyWriter,而是依賴於抽象的介面,複習一下 IoC 該節的例子(同上)
    148148{{{
    149149#!java
     
    194194
    195195Type 3 IoC,則在是建構式上注入依賴關係,例如:
     196{{{
     197#!java
    196198public class BusinessObject {
    197199    private IDeviceWriter writer;
     
    206208    }
    207209}
    208 
     210}}}
    209211
    210212Spring 鼓勵的是 Setter injection,但也允許您使用 Constructor injection,使用 Setter 或 Constructor 來注入依賴關係視您的需求而定,使用 Constructor 的好處之一是,您可以在建構物件的同時一併完成依賴關係的建立,然而如果要建立的物件關係很多,則會在建構式上留下一長串的參數,這時使用 Setter 會是個不錯的選擇,另一方面,Setter 可以有明確的名稱可以瞭解注入的物件會是什麼,像是setXXX()這樣的名稱會比記憶Constructor上某個參數位置代表某個物件來得好。
     
    213215
    214216Type 1 IoC是Interface injection,使用Type 1 IoC時會要求實作介面,這個介面是為容器所用的,容器知道介面上所規定的方法,它可以呼叫實作介面的物件來完成依賴關係的注入,例如:
     217{{{
     218#!java
    215219public interface IDependencyInjection {
    216220    public void createDependency(Map dependObjects);
     
    232236}
    233237
    234 
     238}}}
    235239如果要完成依賴關係注入的物件,必須實現IDependencyInjection介面,並交由容器管理,容器會呼叫被管理物件的createDependency()方法來完成依賴關係的建立。
    236240