객체가 스스로 참조하는 객체를 생성하지 않고, 외부 환경(컨테이너)에서 삽입 되는 형태를 DI(Dependency Injection)라고 하네요.. ^^
DI 를 구현하는 방법은 2가지가 있네요..
1. Constructor 방식
public class Shop {
private final StockManager stockManager;
private final String shopZipCode;
public Shop(StockManager stockManager, String shopZipCode) {
this.stockManager = stockManager;
this.shopZipCode = shopZipCode;
}
}
private final StockManager stockManager;
private final String shopZipCode;
public Shop(StockManager stockManager, String shopZipCode) {
this.stockManager = stockManager;
this.shopZipCode = shopZipCode;
}
}
2. Setter 방식
public class Shop {
StockManager stockManager;
String shopZipCode;
/**
* @service name="StockManager"
*/
public void setStockManager(StockManager stockManager) {
this.stockManager = stockManager;
}
/**
* @config name="shopZipCode"
*/
public void setStockManager(String shopZipCode) {
this.shopZipCode= shopZipCode;
}
// TODO - Joe - how does setter injector do config ? Same way?
public void initialize() {
// all setXXXs are now done :-)
}
}
StockManager stockManager;
String shopZipCode;
/**
* @service name="StockManager"
*/
public void setStockManager(StockManager stockManager) {
this.stockManager = stockManager;
}
/**
* @config name="shopZipCode"
*/
public void setStockManager(String shopZipCode) {
this.shopZipCode= shopZipCode;
}
// TODO - Joe - how does setter injector do config ? Same way?
public void initialize() {
// all setXXXs are now done :-)
}
}
위 내용은 http://www.picocontainer.org/injection.html 에서 읽어보시면 도움이 될것 같습니다. ^^
'Ooad' 카테고리의 다른 글
| OOP에 대한 내용들.. (0) | 2009/07/06 |
|---|---|
| 단순 Reactor 패턴의 성능향상 방안.. (0) | 2009/06/25 |
| DI(Dependency Injection)에 대해서.. (0) | 2009/06/25 |
| POSA 1 - Master-Slave Pattern (0) | 2009/06/18 |
| POSA 1 - Whole-Part Pattern (0) | 2009/06/16 |