시냅스

팩토리 메소드 패턴 Java로 구현 본문

디자인 패턴

팩토리 메소드 패턴 Java로 구현

ted k 2022. 7. 25. 16:35

팩토리 메소드 패턴 Factory method Pattern

  • 인스턴스 작성을 하위 클래스에게 위임.
  • Template Method 패턴을 인스턴스 생성에 적용
  • 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스에서 결정하게 함.
  • 여러 상황에 따라 각각 생성될 수 있는 객체에 대한 생성을 하위 클래스에 위임
  • 생성과 관련된 동일한 메서드는 상위 클래스에서 처리
  • 객체를 만들어 반환하는 함수를 (생성자 대신) 제공하여 초기화 과정을 외부에서 보지 못하게 숨기고 반환 타입을 제어하는 방법.
package factory;

abstract class Car {
    String productName;
    public String toString() {
        return productName;
    }
}

class Sonata extends Car {
    public Sonata() {
        productName = "Sonata";
    }
}

class Grandeur extends Car {
    public Grandeur() {
        productName = "Grandeur";
    }
}

class Genesis extends Car {

    public Genesis() {
        productName = "Genesis";
    }
}
class CarTest {
    public Car produceCar(String name) {
        Car car = null;
        if( name.equalsIgnoreCase("Sonata")) {
            car = new Sonata();
        }
        else if( name.equalsIgnoreCase("Grandeur")) {
            car = new Grandeur();
        }
        else if( name.equalsIgnoreCase("Genesis")) {
            car = new Genesis();
        }
        return car;
    }
}

public class FactoryPattern {
    public static void main(String[] args) {
        CarTest test = new CarTest();
        Car car = test.produceCar("Sonata");
        Car car2 = test.produceCar("grandeur");
        Car car3 = test.produceCar("genesis");
        System.out.println(car);
        System.out.println(car2);
        System.out.println(car3);
    }
}
Comments