728x90

    팩토리 메서드 패턴은 부모 클래스에서 인터페이스 등을 통해 추상화하여 지정하고 자식클래스에서 객체 생성코드를 클라인언트로 분리하여 처음 개발시 추가가 될 수 있는 모듈에대해 미리 대비하여 유연성과 확장성을 가지기 위한 패턴입니다.

    즉, 팩토리 메서드는 객체 생성을 담당하는 팩토리 클래스를 정의하고, 이를 사용하여 객체를 생성합니다. 이를 통해 클라이언트 코드는 구체적인 객체 생성 로직을 알 필요 없이 팩토리 클래스에 의존하여 객체를 생성할 수 있습니다.

    public abstract class Animal {
        public abstract String getName();
    }
    
    public class Cat extends Animal {
        @Override
        public String getName() {
            return "Cat";
        }
    }
    
    public class Dog extends Animal {
        @Override
        public String getName() {
            return "Dog";
        }
    }
    
    public interface AnimalFactory {
        public Animal createAnimal();
    }
    
    public class CatFactory implements AnimalFactory {
        @Override
        public Animal createAnimal() {
            return new Cat();
        }
    }
    
    public class DogFactory implements AnimalFactory {
        @Override
        public Animal createAnimal() {
            return new Dog();
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            AnimalFactory catFactory = new CatFactory();
            Animal cat = catFactory.createAnimal();
            System.out.println("I got a " + cat.getName());
    
            AnimalFactory dogFactory = new DogFactory();
            Animal dog = dogFactory.createAnimal();
            System.out.println("I got a " + dog.getName());
        }
    }

    Posted by 천상나타