[Java_디자인패턴] 팩토리 패턴(Factory Pattern)
2020. 12. 5. 17:42ㆍ백엔드/Java_디자인패턴
728x90
팩토리 패턴
- 생성 할 클래스를 미리 알지 못해도 팩토리 클래스가 객체 생성을 담당
- 객체의 자료형이 하위클래스에 의해서 결정(확장 용이성)
- 동일한 형태로 프로그래밍 가능
- 확장성 있는 전체 프로젝트 구성 가능
- 객체가 늘어날 때 마다 하위 클래스 재정의로 인한 불필요한 많은 클래스 생성 가능성
TV interface
package polymorphism;
public interface TV{
public void powerOn();
public void powerOff();
public void volumeUp();
public void VolumeDown();
}
LgTV.java
package polymorphism;
public class LgTV implements TV{
public void powerOn(){
System.out.println("LgTV 전원켠다...");
}
public void powerOff(){
System.out.println("LgTV 전원끈다...");
}
public void volumeUp(){
System.out.println("LgTV 소리올린다...");
}
public void volumeDown(){
System.out.println("LgTV 소리내린다...");
}
}
SamsungTV.java
package polymorphism;
public class SamsungTV implements TV{
public void powerOn(){
System.out.println("SamsungTV 전원켠다...");
}
public void powerOff(){
System.out.println("SamsungTV 전원끈다...");
}
public void volumeUp(){
System.out.println("SamsungTV 소리올린다...");
}
public void volumeDown(){
System.out.println("SamsungTV 소리내린다...");
}
}
BeanFactory.java
package polymorphism;
public class BeanFactory{
public Object getBean(String name){
if(name.equals("samsung"){
return new SamsungTV();
} else if(name.equals("lg"){
return new LgTV();
}
return null;
}
}
TVUser.java
package polymorphism;
public class TVUser{
public static void main(String[] args){
Beanfactory factory = new BeanFactory();
Tv tv = (TV)factory.getBean("samsung");
tv.powerOn();
tv.volumeUp();
tv.volumeDown();
tv.powerOff();
}
}
참고 : SPRING QUICK START[루비페이퍼-채규태지음] (교재) ,
728x90
'백엔드 > Java_디자인패턴' 카테고리의 다른 글
[Java_디자인패턴] 싱글톤 패턴(Singleton Pattern) (0) | 2020.12.11 |
---|