디자인패턴 - Factory

code_able·5일 전
0

Factory 패턴이란

팩토리 디자인 패턴은 객체 생성 로직을 캡슐화하여 코드의 유연성과 확장성을 높이는 디자인 패턴입니다. 이를 통해 객체 생성에 관한 로직을 클라이언트 코드에서 분리하고, 객체 생성 방식을 재정의하거나 확장할 수 있는 구조를 제공합니다.

팩토리 패턴의 핵심 아이디어는 객체 생성 과정을 메소드에 위임하여, 객체를 직접 생성하지 않고 해당 메소드가 올바른 인스턴스를 반환하도록 하는 것입니다. 이는 코드 변경 없이 새로운 객체 타입을 쉽게 추가할 수 있도록 하며, 특히 클라이언트 코드가 생성되는 구체 클래스에 의존하지 않도록 하는 데에 효과적입니다.

장점

  • 유연성 증가: 객체 생성 로직을 한 곳에 집중하여 유지보수와 확장이 쉽습니다.
  • 코드 재사용성: 클라이언트 코드가 객체 생성 방식을 알 필요가 없으므로 코드 재사용성이 높아집니다.
  • 의존성 감소: 클라이언트는 구체 클래스가 아닌 인터페이스에 의존하므로, 코드 변경이 덜 필요하게 됩니다.

예제 코드

from abc import ABC, abstractmethod

# 1. Animal 추상 클래스 정의
class Animal(ABC):
    @abstractmethod
    def speak(self):
        pass

# 2. 구체적인 클래스 정의
class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

# 3. AnimalFactory 클래스 정의
class AnimalFactory:
    @staticmethod
    def create_animal(animal_type):
        if animal_type == "dog":
            return Dog()
        elif animal_type == "cat":
            return Cat()
        else:
            raise ValueError(f"Unknown animal type: {animal_type}")

# 4. 클라이언트 코드에서 팩토리 메서드를 사용해 객체 생성
if __name__ == "__main__":
    animal_type = "dog"  # 혹은 "cat"
    animal = AnimalFactory.create_animal(animal_type)
    print(animal.speak())  # 출력: "Woof!" 또는 "Meow!"
profile
할수 있다! code able
post-custom-banner

0개의 댓글