2013년 9월 26일 목요일

[스프링프레임워크3.X IoC 강좌2]Spring IoC, 스프링 IoC, 스프링제어역행, Spring Framework3.2 Inversion Of Control 구현을 인터페이스 뒤로 숨기기 결합도를 낮추는 일반적인 기법은 구체적인 구현 내용을 인터페이스의 뒤로 숨김으로써, 클라이언트 클래스에 영향을 주지 않고도 실제 구현 클래스가 교체될 수 있도록 하는 것 1. CarMaker Interface 작성 package edu.biz.ioc; public interface CarMaker { public Car sell(Money money) ; }///~ 2. HyundaiMaker가 CarMaker 인터페이스 구현하도록 수정 package edu.biz.ioc; public class HyundaiMaker implements CarMaker{ public HyundaiMaker() { }//: public Car sell(Money money) { System.out.println("I sold a car."); Car car = new Car("Sonata"); return car; } }///~ 3. OrderManager가 인터페이스를 사용하도록 수정 package edu.biz.ioc; public class OrderManager { //만약 인터페이스를 사용하지 않는다면 HyundaiMaker 다른 메이커로 교체된다//면 아래의 private CarMaker maker를 포함하여 소스코드가 수정되어야 하지만 //인터페이스를 사용한다면 new HyundaiMaker () 부분만 수정하면 된다. private CarMaker maker; public OrderManager() { this.maker = new HyundaiMaker(); //나중에 다름 new DaewooMaker()로 수정하면 된다. } public void order() { Car car = this.maker.sell(new Money(1000)); } }///~ [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecSpring&wr_id=276

[스프링프레임워크3.X IoC 강좌2]Spring IoC, 스프링 IoC, 스프링제어역행, Spring Framework3.2 Inversion Of Control
 
구현을 인터페이스 뒤로 숨기기
 
결합도를 낮추는 일반적인 기법은 구체적인 구현 내용을 인터페이스의 뒤로 숨김으로써, 클라이언트 클래스에 영향을 주지 않고도 실제 구현 클래스가 교체될 수 있도록 하는 것

1. CarMaker Interface 작성

package edu.biz.ioc;
  public  interface CarMaker {
     
      public Car  sell(Money money) ;
}///~
 
 
2. HyundaiMaker가 CarMaker 인터페이스 구현하도록 수정
 
package edu.biz.ioc;
public class HyundaiMaker implements CarMaker{
 public HyundaiMaker() {
 }//:
 public Car sell(Money money) {
  
    System.out.println("I sold a car.");
    Car car = new Car("Sonata");
    return car;
  }
}///~
 
 
3. OrderManager가 인터페이스를 사용하도록 수정

package edu.biz.ioc;
public class OrderManager {
//만약 인터페이스를 사용하지 않는다면 HyundaiMaker 다른 메이커로 교체된다//면 아래의 private CarMaker maker를 포함하여 소스코드가 수정되어야 하지만 //인터페이스를 사용한다면 new HyundaiMaker () 부분만 수정하면 된다.
private CarMaker maker;
public OrderManager() {
   this.maker = new HyundaiMaker(); //나중에 다름 new DaewooMaker()로 수정하면 된다.
}
public void order() {
    Car car = this.maker.sell(new Money(1000));
}
}///~
 
 
 



오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  


댓글 없음:

댓글 쓰기