🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Python 디자인 패턴 완벽 가이드 - 슬라이드 1/9
A

AI Generated

2025. 11. 2. · 23 Views

Python 디자인 패턴 완벽 가이드

소프트웨어 개발에서 자주 사용되는 디자인 패턴을 Python으로 쉽게 배워봅니다. 싱글톤, 팩토리, 옵저버 등 실무에서 바로 활용 가능한 패턴들을 초급자 눈높이에 맞춰 설명합니다.


카테고리:Python
언어:Python
메인 태그:#Python
서브 태그:
#Singleton#Factory#Observer#Strategy

들어가며

이 글에서는 Python 디자인 패턴 완벽 가이드에 대해 상세히 알아보겠습니다. 총 8가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Singleton_패턴
  2. Factory_패턴
  3. Observer_패턴
  4. Strategy_패턴
  5. Decorator_패턴
  6. Builder_패턴
  7. Adapter_패턴
  8. Template_Method_패턴

1. Singleton 패턴

개요

클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 패턴입니다. 데이터베이스 연결이나 설정 관리에 유용합니다.

코드 예제

class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

s1 = Singleton()
s2 = Singleton()
print(s1 is s2)  # True

설명

new 메서드를 오버라이드하여 인스턴스가 없을 때만 생성하고, 이미 있으면 기존 인스턴스를 반환합니다.


2. Factory 패턴

개요

객체 생성 로직을 캡슐화하여 클라이언트 코드와 분리하는 패턴입니다. 어떤 클래스의 인스턴스를 만들지 서브클래스에서 결정합니다.

코드 예제

class Dog:
    def speak(self): return "멍멍!"

class Cat:
    def speak(self): return "야옹!"

def animal_factory(animal_type):
    if animal_type == "dog":
        return Dog()
    return Cat()

pet = animal_factory("dog")
print(pet.speak())  # 멍멍!

설명

팩토리 함수가 타입에 따라 적절한 객체를 생성하여 반환합니다. 객체 생성 로직이 한 곳에 집중됩니다.


3. Observer 패턴

개요

한 객체의 상태가 변경되면 그 객체에 의존하는 다른 객체들에게 자동으로 알림을 보내는 패턴입니다.

코드 예제

class Subject:
    def __init__(self):
        self._observers = []

    def attach(self, observer):
        self._observers.append(observer)

    def notify(self, message):
        for obs in self._observers:
            obs.update(message)

class Observer:
    def update(self, message):
        print(f"알림: {message}")

설명

Subject가 상태 변경 시 등록된 모든 Observer에게 notify를 통해 알림을 전달합니다.


4. Strategy 패턴

개요

알고리즘을 객체로 캡슐화하여 런타임에 알고리즘을 선택할 수 있게 하는 패턴입니다.

코드 예제

class PaymentStrategy:
    def pay(self, amount): pass

class CreditCard(PaymentStrategy):
    def pay(self, amount):
        return f"카드로 {amount}원 결제"

class Cash(PaymentStrategy):
    def pay(self, amount):
        return f"현금으로 {amount}원 결제"

strategy = CreditCard()
print(strategy.pay(10000))

설명

결제 방식을 전략 객체로 분리하여 실행 시점에 원하는 전략을 선택할 수 있습니다.


5. Decorator 패턴

개요

기존 객체에 새로운 기능을 동적으로 추가하는 패턴입니다. 상속 없이 기능을 확장할 수 있습니다.

코드 예제

def bold_decorator(func):
    def wrapper():
        return f"<b>{func()}</b>"
    return wrapper

@bold_decorator
def hello():
    return "안녕하세요"

print(hello())  # <b>안녕하세요</b>

설명

데코레이터를 사용해 원본 함수를 수정하지 않고 추가 기능(볼드 태그)을 적용합니다.


6. Builder 패턴

개요

복잡한 객체를 단계별로 생성하는 패턴입니다. 생성 과정과 표현 방법을 분리합니다.

코드 예제

class Pizza:
    def __init__(self):
        self.toppings = []

    def add_topping(self, topping):
        self.toppings.append(topping)
        return self

pizza = Pizza()
pizza.add_topping("치즈").add_topping("페퍼로니")
print(pizza.toppings)  # ['치즈', '페퍼로니']

설명

메서드 체이닝을 통해 객체를 단계적으로 구성합니다. self를 반환하여 연속 호출이 가능합니다.


7. Adapter 패턴

개요

호환되지 않는 인터페이스를 가진 클래스들을 함께 작동시키는 패턴입니다.

코드 예제

class OldPrinter:
    def old_print(self, text):
        return f"[구형] {text}"

class PrinterAdapter:
    def __init__(self, old_printer):
        self.printer = old_printer

    def print(self, text):
        return self.printer.old_print(text)

adapter = PrinterAdapter(OldPrinter())
print(adapter.print("테스트"))

설명

어댑터가 구형 프린터의 인터페이스를 새로운 인터페이스로 변환하여 호환성을 제공합니다.


8. Template Method 패턴

개요

알고리즘의 구조는 상위 클래스에서 정의하고, 세부 단계는 하위 클래스에서 구현하는 패턴입니다.

코드 예제

class Recipe:
    def cook(self):
        self.prepare()
        self.cook_main()
        self.serve()

    def prepare(self): print("재료 준비")
    def cook_main(self): pass
    def serve(self): print("서빙")

class Pasta(Recipe):
    def cook_main(self): print("파스타 끓이기")

Pasta().cook()

설명

Recipe 클래스가 요리 순서를 정의하고, Pasta 클래스가 구체적인 조리 방법을 구현합니다. --- 생성이 완료되었습니다! 참고사항: - 실제로 "Ubuntu 디자인 패턴"이라는 특정 패턴이 있다면 말씀해주시면 해당 내용으로 다시 생성해드리겠습니다. - 혹시 Ubuntu 환경에서 사용되는 디자인 패턴을 원하셨다면, 구체적인 맥락(예: Ubuntu UI 개발, Shell 스크립트 패턴 등)을 알려주세요.


마치며

이번 글에서는 Python 디자인 패턴 완벽 가이드에 대해 알아보았습니다. 총 8가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#Python #Singleton #Factory #Observer #Strategy

#Python#Singleton#Factory#Observer#Strategy

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.