Spring
[ Spring ] IOC (Inversion of Control) - 인터페이스 활용
dauneee
2022. 4. 1. 15:40
1. TV라는 인터페이스를 생성하여 강제성을 부여해준다.
package test;
public interface TV {
public void powerOn();
public void powerOff();
public void volumeUp();
public void volumeDown();
}
2. TV를 implements 하여 LgTV와 SamsungTV를 만들어준다.
package test;
public class SamsungTV implements TV {
public SamsungTV() {
System.out.println("SamsungTV 객체생성");
}
public void turnOn() {
System.out.println("전원을 켭니다.");
}
public void turnOff() {
System.out.println("전원을 끕니다.");
}
public void soundUp() {
System.out.println("소리를 올립니다.");
}
public void soundDown() {
System.out.println("소리를 내립니다.");
}
@Override
public void powerOn() {
// TODO Auto-generated method stub
System.out.println("전원 ON");
}
@Override
public void powerOff() {
// TODO Auto-generated method stub
System.out.println("전원 OFF");
}
@Override
public void volumeUp() {
// TODO Auto-generated method stub
System.out.println("음량 UP");
}
@Override
public void volumeDown() {
// TODO Auto-generated method stub
System.out.println("음량 DOWN");
}
}
package test;
public class SamsungTV implements TV {
public LgTV() {
System.out.println("LgTV 객체생성");
}
public void turnOn() {
System.out.println("전원을 켭니다.");
}
public void turnOff() {
System.out.println("전원을 끕니다.");
}
public void soundUp() {
System.out.println("소리를 올립니다.");
}
public void soundDown() {
System.out.println("소리를 내립니다.");
}
@Override
public void powerOn() {
// TODO Auto-generated method stub
System.out.println("전원 ON");
}
@Override
public void powerOff() {
// TODO Auto-generated method stub
System.out.println("전원 OFF");
}
@Override
public void volumeUp() {
// TODO Auto-generated method stub
System.out.println("음량 UP");
}
@Override
public void volumeDown() {
// TODO Auto-generated method stub
System.out.println("음량 DOWN");
}
}
3. 인터페이스를 통하여 클라이언트는 TV를 바꾸어도 같은 리모컨으로 동작시킬 수 있게 된다.
package test;
public class Client {
public static void main(String[] args) {
// 1. 다형성(인터페이스)
TV tv=new SamsungTV();
tv.powerOn();
tv.volumeUp();
tv.powerOff();
}
}
- 이러한 설계 만으로도 결합도를 충분히 낮출 수 있다.