Factory Method
부모 클래스가 객체를 생성할 수 있는 Interface를 제공하지만 자식 클래스들이 생성될 때, 생성되는 객체의 유형을 변경할 수 있도록 해주는 생성패턴
public interface chair() {
createLeg();
}
public class woodChair() {
createLeg() {
...
}
}
public class goldenChair() {
createLeg() {
...
}
}
Abstract Factory
관련 객체들의 구상 클래스들을 지정하지 않고도 그들의 패밀리들을 생성할 수 있도록 하는 생성패턴
예를 들어 아래와 같다.
public class RPNCalculator {
public int calculate(String input, String operatorStr) {
Operator operator = OperatorFactory.createOperator(operatorStr);
...
}
}
public class OperatorFactory {
private static final String MAX = "MAX";
private static final String SQRT = "SQRT";
public static Operator createOperator(String operator) {
if ("-".equals(operator)) {
return new MinusOperator();
} else if ("*".equals(operator)) {
return new MultiplicationOperator();
} else if ("/".equals(operator)) {
return new DivisionOperator();
} else if ("+".equals(operator)) {
return new PlusOperator();
} else if (MAX.equals(operator)) {
return new MaxOperator();
} else if (SQRT.equals(operator)) {
return new SqrtOperator();
} else {
return null;
}
}
}
위처럼 Factory Class에 객체의 생성을 일이하는 것이다.예시에서는 하나의 Operator만을 생성하였지만,예를 들어 집의 냉장고, 세탁기 객체 등 패밀리들을 담당하는 Factory가 존재할 수도 있다,
'Architecture (아키텍쳐) > DesignPattern' 카테고리의 다른 글
Gang of Four (Gof) 디자인 패턴 (0) | 2021.04.25 |
---|---|
디자인 패턴 이란? (0) | 2021.04.25 |