2013년 10월 21일 월요일

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

[스프링프레임워크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));
}
}///~
 
 
 

[스프링프레임워크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));
}
}///~
 
 

댓글 없음:

댓글 쓰기