Factory Pattern은 객체 생성을 대신 수행해주는 공장(Factory)가 있는 패턴이다.
Factory Pattern은 아래와 같은 장단점이 있다.
[장점]
[단점]
위와 같은 특성 때문에 아래와 같은 상황에 주로 사용된다.
Figure.java
public interface Figure {
void draw();
}
Circle.java
public class Circle implements Figure {
@Override
public void draw() {
System.out.println("Circle DRAW");
}
}
Rectangle.java
public class Rectangle implements Figure {
@Override
public void draw() {
System.out.println("Rectangle DRAW");
}
}
Square.java
public class Square implements Figure {
@Override
public void draw() {
System.out.println("Square DRAW");
}
}
FigureFactory.java
public class FigureFactory {
public Figure getFigure(String type) {
if ("CIRCLE".equalsIgnoreCase(type) {
return new Circle();
} else if ("RECTANGLE".equalsIgnoreCase(type) {
return new Rectangle();
}
else if ("SQUARE".equalsIgnoreCase(type) {
return new Square();
}
return null;
}
}
Main.java
public class Main {
public static void main(String[] args) {
FigureFactory factory = new FigureFactory();
Figure fig1 = factory.getFigure("CIRCLE");
Figure fig2 = factory.getFigure("RECTANGLE");
Figure fig3 = factory.getFigure("SQUARE");
fig1.draw();
fig2.draw();
fig3.draw();
}
}
main 실행 결과
Circle DRAW
Rectangle DRAW
Square DRAW