JAVA

[JAVA] 팩토리 패턴(Factory Pattern)이란?

sagecode 2025. 5. 22. 15:10

팩토리 패턴이란?

객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.

 

팩토리 패턴 구현

enum PhoneType {
    APPLE, SAMSUNG
}

abstract class Phone {
    String name;
    
    public String Phone() {
    	return name;
    }
}

class ApplePhone extends Phone {
    public ApplePhone() {
    	name = "apple";
    }
}

class SamsungPhone extends Phone {
    public SamsungPhone() {
    	name = "samsung";
    }
}

class PhoneFactory {
    public static Phone createPhone(PhoneType type) {
    	switch (type) {
            case APPLE:
                return new ApplePhone();
            case SAMSUNG:
                return new SamsungPhone();
            default:
                throw new IllegalArgumentException("Invalid coffe type : " + type);
        }
    }
}

Phone 클래스를 상속하는 ApplePhone, SamsungPhone 클래스의 구현을 PhoneFactory에게 위임하였다. 이렇게 각각의 코드를 변경하거나 새로운 클래스를 추가하게 되더라도 생성에 관련된 부분은 factory에게 위임하였고, 상위 클래스에서는 생성방식에 대해서 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게된다.