728x90
반응형
TV 클래스들의 최상위 부모로 사용할 TV 인터페이스 생성,
모든 TV가 공통으로 가져야 할 메소드들을 추상 메소드로 선언
package polymorphism;
public interface TV {
public void powerOn();
public void powerOff();
public void volumeUp();
public void volumeDown();
}
이제 SamsungTV와 LgTV 클래스 생성
LgTV
package polymorphism;
public class LgTV implements TV{
public void powerOn() {
// TODO Auto-generated method stub
System.out.println("LgTV----전원 킨다.");
}
public void powerOff() {
// TODO Auto-generated method stub
System.out.println("LgTV----전원 끈다.");
}
public void volumeUp() {
// TODO Auto-generated method stub
System.out.println("LgTV----볼륨 높인다.");
}
public void volumeDown() {
// TODO Auto-generated method stub
System.out.println("LgTV----볼륨 낮춘다.");
}
}
SamsungTV
package polymorphism;
public class SamsungTV implements TV{
public void powerOn() {
// TODO Auto-generated method stub
System.out.println("SamsungTV----전원 켠다.");
}
public void powerOff() {
// TODO Auto-generated method stub
System.out.println("SamsungTV----전원 끈다..");
}
public void volumeUp() {
// TODO Auto-generated method stub
System.out.println("SamsungTV----볼륨 높인다.");
}
public void volumeDown() {
// TODO Auto-generated method stub
System.out.println("SamsungTV----볼륨 낮춘다.");
}
}
TV를 교체할 때, 클라이언트 소스를 수정하지 않고 TV를 교체할 수 있다면 유지보수는 더 쉬워진다.
Factory 패턴은 클라이언트에서 사용할 객체 생성을 캡슐화해 TVUser와 TV사이를 느슨한 결합 상태로 만들어준다.
Factory 패턴이 적용된 BeanFactory 클래스
package polymorphism;
public class BeanFactory {
public Object getBean(String beanName){
if(beanName.equals("samsung"))
{
return new SamsungTV();
}
else if(beanName.equals("lg"))
{
return new LgTV();
}
return null;
}
}
getBean()메소드는 매개변수로 받은 beanName에 해당하는 객체를 생성해 리턴한다. if와 else if문을 사용했으므로 반드시 해당하지 않는 조건을 생각해 return null을 사용한다.
디자인 패턴을 이용해 TVUser 생성
이제 이 두 TV를 이용하는 TVUser 클래스를 생성한다.
package polymorphism;
public class TVUser {
public static void main(String[] args) {
BeanFactory factory = new BeanFactory();
TV tv = (TV)factory.getBean(args[0]); // (TV)를 써야하는 이유는 결합도를 낮추기 위해 사용
tv.powerOn();
tv.volumeUp();
tv.volumeDown();
tv.powerOff();
}
}
j
실행 방법
TVUser 클래스 마우스 우클릭 -> Run As -> Run Configurations -> Arguments -> Program arguments : lg,samsung
위의 방법을 끝내고 Run을 누르면 이제 결과가 나온다
728x90
반응형
최근댓글