Changes between Version 5 and Version 6 of waue/2011/spring
- Timestamp:
- Aug 24, 2011, 5:31:22 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
waue/2011/spring
v5 v6 145 145 == Type 2 IoC : Setter injection == 146 146 147 BusinessObject 依賴於實際的 FloppyWriter,為了讓 BusinessObject 獲得重用性,不讓 BusinessObject 直接依賴於實際的 FloppyWriter,而是依賴於抽象的介面 :147 BusinessObject 依賴於實際的 FloppyWriter,為了讓 BusinessObject 獲得重用性,不讓 BusinessObject 直接依賴於實際的 FloppyWriter,而是依賴於抽象的介面,複習一下 IoC 該節的例子(同上): 148 148 {{{ 149 149 #!java … … 194 194 195 195 Type 3 IoC,則在是建構式上注入依賴關係,例如: 196 {{{ 197 #!java 196 198 public class BusinessObject { 197 199 private IDeviceWriter writer; … … 206 208 } 207 209 } 208 210 }}} 209 211 210 212 Spring 鼓勵的是 Setter injection,但也允許您使用 Constructor injection,使用 Setter 或 Constructor 來注入依賴關係視您的需求而定,使用 Constructor 的好處之一是,您可以在建構物件的同時一併完成依賴關係的建立,然而如果要建立的物件關係很多,則會在建構式上留下一長串的參數,這時使用 Setter 會是個不錯的選擇,另一方面,Setter 可以有明確的名稱可以瞭解注入的物件會是什麼,像是setXXX()這樣的名稱會比記憶Constructor上某個參數位置代表某個物件來得好。 … … 213 215 214 216 Type 1 IoC是Interface injection,使用Type 1 IoC時會要求實作介面,這個介面是為容器所用的,容器知道介面上所規定的方法,它可以呼叫實作介面的物件來完成依賴關係的注入,例如: 217 {{{ 218 #!java 215 219 public interface IDependencyInjection { 216 220 public void createDependency(Map dependObjects); … … 232 236 } 233 237 234 238 }}} 235 239 如果要完成依賴關係注入的物件,必須實現IDependencyInjection介面,並交由容器管理,容器會呼叫被管理物件的createDependency()方法來完成依賴關係的建立。 236 240