본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 11. 2. · 23 Views
Python 디자인 패턴 완벽 가이드
소프트웨어 개발에서 자주 사용되는 디자인 패턴을 Python으로 쉽게 배워봅니다. 싱글톤, 팩토리, 옵저버 등 실무에서 바로 활용 가능한 패턴들을 초급자 눈높이에 맞춰 설명합니다.
들어가며
이 글에서는 Python 디자인 패턴 완벽 가이드에 대해 상세히 알아보겠습니다. 총 8가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Singleton_패턴
- Factory_패턴
- Observer_패턴
- Strategy_패턴
- Decorator_패턴
- Builder_패턴
- Adapter_패턴
- 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
이 카드뉴스가 포함된 코스
댓글 (0)
함께 보면 좋은 카드 뉴스
Helm 마이크로서비스 패키징 완벽 가이드
Kubernetes 환경에서 마이크로서비스를 효율적으로 패키징하고 배포하는 Helm의 핵심 기능을 실무 중심으로 학습합니다. Chart 생성부터 릴리스 관리까지 체계적으로 다룹니다.
보안 아키텍처 구성 완벽 가이드
프로젝트의 보안을 처음부터 설계하는 방법을 배웁니다. AWS 환경에서 VPC부터 WAF, 암호화, 접근 제어까지 실무에서 바로 적용할 수 있는 보안 아키텍처를 단계별로 구성해봅니다.
AWS Organizations 완벽 가이드
여러 AWS 계정을 체계적으로 관리하고 통합 결제와 보안 정책을 적용하는 방법을 실무 스토리로 쉽게 배워봅니다. 초보 개발자도 바로 이해할 수 있는 친절한 설명과 실전 예제를 제공합니다.
AWS KMS 암호화 완벽 가이드
AWS KMS(Key Management Service)를 활용한 클라우드 데이터 암호화 방법을 초급 개발자를 위해 쉽게 설명합니다. CMK 생성부터 S3, EBS 암호화, 봉투 암호화까지 실무에 필요한 모든 내용을 담았습니다.
AWS Secrets Manager 완벽 가이드
AWS에서 데이터베이스 비밀번호, API 키 등 민감한 정보를 안전하게 관리하는 Secrets Manager의 핵심 개념과 실무 활용법을 배워봅니다. 초급 개발자도 쉽게 따라할 수 있도록 실전 예제와 함께 설명합니다.