728x90
반응형
팩토리 메소드 패턴
- 실무에서 어떻게 쓰이나?
- 단순한 팩토리 패턴
- 매개변수의 값에 따라 또는 메소드에 따라 각기 다른 인스턴스를 리턴하는 단순한 버전의 팩토리 패턴
- java.lang.Calendar 또는 java.lang.NumberFormat
- 스프링 BeamFactory
- Object 타입의 Product를 만드는 BeamFactory라는 Creator!
단순한 팩토리 패턴
- 하나의 구현체 두고 그것에 대해서 구현체를 만드는 모양임
SimpleFactory
public class SimpleFactory{
public Object createProduct(String name){
if(name.equals("Whiteship")){
return new Whiteship();
}else (name.equals("blackship")){
return new Blackship();
}
throw new IllegalArgumentException();;
}
}
- 이런것을 simpleFactory 패턴이라고함
자바에서 제공하는 Calendar
- 이것이 simpleFactory로 만들어져있음
System.out.println(Calendar.getInstance().getClass());
System.out.println(Calendar.getInstance(Locale.forLanguageTag("th-Th-x-lvariant-TH")).getClass());
System.out.println(Calendar.getInstance(Locale.forLanguageTag("ja-JP-x-lvariant-JP")).getClass());
- 오버로딩된 메소드같이 넘겨서 가져오거나하면 인스턴스가 달라진다.
- 매게변수 넘기는것이랑 아닌것이 다르다는 소리
Spring의 BeamFactory
- 이것이 팩토리 패턴을 구현한 구현체이다.
public class SpringBeanFactoryExample{
public static void main(String[] args){
BeanFactory xmlFactory = new ClassPathXmlApplicationContext("config.xml");
String hello = xmlFactory.getBean("hello",String.class);
System.out.println(hello);
BeanFactory javaFactory = new AnnotationConfigApplicationContext(Config.class);
String hi = javaFactory.getBean("hello",String.class);
System.out.println(hi);
}
}
- 여기서 BeanFactory가 Creator 인터페이스라고 생가하면되고,
- 구현체는 ConcreateCreator임
- getBean이 Object로 넘겨줌 - product에 해당함
Config.class
@Configuration
public class Cofig{
@Bean
public String hello(){
return "hello";
}
}
- 이런것들이 ConcreateProduct에 해당한다.
728x90
반응형
'CS Study > 디자인패턴' 카테고리의 다른 글
2021.11.21_추상팩토리패턴02.패턴적용하기 (0) | 2021.11.21 |
---|---|
2021.11.21_추상팩토리패턴01.패턴소개 (0) | 2021.11.21 |
2021.11.18_팩토리메소드패턴04.장점과단점 (0) | 2021.11.18 |
2021.11.18_팩토리메소드패턴03.인터페이스적용하기 (0) | 2021.11.18 |
2021.11.15_팩토리메소드패턴02.패턴적용하기 (0) | 2021.11.15 |
댓글