Factory Pattern
클래스의 생성을 다른 클래스의에 위임하는 것
코드
public class FactoryPatternPractice {
public static void main(String[] args) {
Book mathBook = FactoryPattern.createClass("math");
Book historyBook = FactoryPattern.createClass("history");
System.out.println(mathBook.getName());
System.out.println(historyBook.getName());
}
}
interface Book {
String getName();
}
class MathBook implements Book {
@Override
public String getName() {
return "MathBook";
}
}
class HistoryBook implements Book {
@Override
public String getName() {
return "HistoryBook";
}
}
class FactoryPattern {
public static Book createClass(String name) {
switch (name) {
case "math":
return new MathBook();
case "history":
return new HistoryBook();
default:
return null;
}
}
}
장단점
- 객체 생성 코드를 전부 한 객체 또는 메소드에 집어넣으면 코드에 중복되는 내용을 제거할 수 있다.
- 유지보수에도 편하다.
- 인터페이스 바탕으로 프로그래밍을 할 수 있다.
- 생성할 객체의 종류가 달라질 때마다 새로운 클래스를 만들어야 한다. 이것은 불 필요하게 많은 클래스를 만들어낼 수 있다.