팩토리 메서드 패턴 (factory method pattern)

JunSeong_Park·2023년 1월 3일
0
post-custom-banner

공장은 물건을 생산하는데 객체 지향에서 팩터리는 객체를 생성한다.

결국 팩터리 메서드는 객체를 생성 반환하는 메서드를 말한다.

여기에 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩하여 객체를 반환하게 하는 것을 의미한다.

package DesignPattern.factoryMethodPattern;

public abstract class Animal {
    // 추상 팩토리 메서드
    abstract AnimalToy getToy();
}

abstract class AnimalToy {
    abstract void identify();
}

class Dog extends Animal {
    // 추상 팩토리 메서드 오버라이딩
    @Override
    AnimalToy getToy(){
        return new DogToy();
    }
}

class DogToy extends AnimalToy {
    public void identify() {
        System.out.println("DogToy");
    }
}

class Cat extends Animal {
    // 추상 팩토리 메서드 오버라이딩
    @Override
    AnimalToy getToy() {
        return new CatToy();
    }
}

class CatToy extends AnimalToy {
    public void identify() {
        System.out.println("CatToy");
    }
}
package DesignPattern.factoryMethodPattern;

public class Driver {
    public static void main(String[] args) {
        Animal dog = new Dog();
        Animal cat = new Cat();

        AnimalToy dogToy = dog.getToy();
        AnimalToy catToy = cat.getToy();

        dogToy.identify();
        catToy.identify();
    }
}

위와 같은 예시가 있다고 가정하자

getToy 라는 추상 팩토리 메서드를 사용해서 하위 클래스에서 재정의하여 함수 호출 → 각 하위 클래스별로 객체를 반환

오버라이드된 메서드가 객체를 반환하는 패턴

헷갈리면 클래스다이어그램과 시퀀스다이어그램을 보도록 하자

출처 : 스프링 입문을 위한 자바

profile
안녕하세요 언어에 구애 받지 않는 개발자가 되고 싶은 박준성입니다
post-custom-banner

0개의 댓글