[ Spring ] IOC (Inversion of Control) - 인터페이스 활용
2022. 4. 1. 15:40ㆍSpring
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();
}
}
- 이러한 설계 만으로도 결합도를 충분히 낮출 수 있다.
'Spring' 카테고리의 다른 글
| [ Spring ] AOP ( Aspect Oriented Programming ) - excepObj를 통하여 반환된 예외 확인하기 (0) | 2022.04.07 |
|---|---|
| [ Spring ] AOP ( Aspect Oriented Programming ) - 핵심 관심 호출하기 ( 사용된 인자와 메서드명, 반환 값 확인 하기 ) (0) | 2022.04.07 |
| [ Spring ] AOP ( Aspect Oriented Programming ) - 관점 지향 프로그래밍 | 로그 작성하기 (0) | 2022.04.04 |
| [ Spring ] IOC (Inversion of Control) - 디자인 패턴(Factory) 활용 (0) | 2022.04.01 |
| [ Spring ] 스프링 프레임워크의 특징 (0) | 2022.03.29 |