Architecture (아키텍쳐)/DesignPattern

Factory Method, Abstract Factory (팩토리 메서드, 추상 팩토리)

jw92 2021. 4. 25. 22:01

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