반응형
정의
Factory method pattern은 interface나 abstract class로 정의된 오브젝트를 직접 생성하는 것이 아니라 이 생성을 subclass가 결정하여 하도록 하는 것입니다. 결론적으로 객체를 subclass가 만든다 입니다.
말로 설명하는 것 보단 코드를 보는게 더 이해가 쉽겠죠?
코드
도형을 생성하는 것을 예제로 코드를 구성해보려고 합니다.
public interface Shape {
void draw();
}
interface로 Shape을 만들고 사용할 도형들을 아래와 같이 구현합니다.
enum ShapeTypes {
Ellipse,
Rectangle,
Polygon
}
public class Ellipse implements Shape {
@Override
public void draw() {
// TODO draw ellipse
System.out.println("draw Ellipse");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
// TODO draw rect
System.out.println("draw Rectangle");
}
}
public class Polygon implements Shape {
@Override
public void draw() {
// TODO draw polygon
System.out.println("draw Polygon");
}
}
public class ShapeFactory {
public Shape getShape(ShapeTypes type) {
switch (type) {
case Ellipse:
return new Ellipse();
case Rectangle:
return new Rectangle();
case Polygon:
return new Polygon();
default:
throw new IllegalArgumentException();
}
}
}
ShapeFactory class 와 같이 Shape을 생성하는 부분을 해당 class를 통하여 받도록 처리합니다.
사용의 이점은 아래와 같습니다.
- Factory를 통해 객체들이 생성되기 된니다. 즉 한곳에서 생성되기 때문에 관리가 쉬워집니다.
- 동일간 분류의 새로운 기능이 추가될 때등의 확장성이 용의합니다.
- 특히 협업을 할 경우 새로운 객체가 추가될 때 보다 약속된 플레이가 가능해집니다.
- 또한 추상화된 객체를 사용하기 때문에 유연성이 높아진다고 볼 수 있습니다.
반응형
'소프트웨어 스터디 > 디자인패턴' 카테고리의 다른 글
Builder Pattern - 빌더패턴 (0) | 2021.01.07 |
---|---|
Singleton 패턴 (0) | 2021.01.05 |