회원가입

[생성패턴] 팩토리 메서드 패턴 factory

NULL 2022-10-09

 

참고 문서https://github.com/faif/python-patterns

아래 글은 위 참고 문서를 토대로 만들어진 내용입니다.

 


 

팩토리 패턴이란?

객체를 생성하기 위한 인터페이스를 정의하는 것입니다.

return 되는 값이 객체를 생성 시키는 패턴입니다.

 

아래 코드를 봅시다!

class GreekLocalizer:
    """A simple localizer a la gettext"""

    def __init__(self) -> None:
        self.translations = {"dog": "σκύλος", "cat": "γάτα"}

    def localize(self, msg: str) -> str:
        """We'll punt if we don't have a translation"""
        return self.translations.get(msg, msg)


class EnglishLocalizer:
    """Simply echoes the message"""

    def localize(self, msg: str) -> str:
        return msg


def get_localizer(language: str = "English") -> object:

    """Factory"""
    localizers = {
        "English": EnglishLocalizer,
        "Greek": GreekLocalizer,
    }

    return localizers[language]()


def main():
    """
    # Create our localizers
    >>> e, g = get_localizer(language="English"), get_localizer(language="Greek")
    # Localize some text
    >>> for msg in "dog parrot cat bear".split():
    ...     print(e.localize(msg), g.localize(msg))
    dog σκύλος
    parrot parrot
    cat γάτα
    bear bear
    """


if __name__ == "__main__":
    import doctest

    doctest.testmod()

 

GreekLocalizer 와 EnglishLocalizer get_localizer 함수에 의해 객체가 생성되고 있습니다.

팩토리가 즉, 여기서는 get_localizer 가 오로지 객체를 생성하는 일을 맡는 것입니다.

 

0 0
디자인패턴
A collection of design patterns and idioms in Python.
Yesterday: 291
Today: 46