객체지향

[객체지향] 디자인 패턴(3) - 팩토리 메서드 패턴

재담 2022. 5. 2. 22:31

팩토리 메서드 패턴

팩토리 메서드 패턴부모 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.

 

다음 예시를 보자. Robot 클래스를 RobotFactory 클래스에서 생성하도록 되어 있다. createRobot 메서드에 넘어오는 name 파라미터에 따라 생성되는 Robot 클래스가 달라지는 것이다.

Robot (추상 클래스)
- SuperRobot
- PowerRobot

RobotFactory (추상 클래스)
- SuperRobotFactory
- ModifiedSuperRobotFactory
public abstract class RobotFactory {
    abstract Robot createRobot(String name);
}
public class SuperRobotFactory extends RobotFactory {
    
    @Override
    Robot createRobot(String name) {
        switch(name) {
            case "super" :
                return new SuperRobot();
            case "power" :
                return new PowerRobot();
        }
        
        return null;
    }
    
}

Reference