반응형
Day 1: 디자인 패턴 개요
- 강의 내용:
- 디자인 패턴의 개념
- 디자인 패턴이란 무엇인가?
- 디자인 패턴의 중요성
- 디자인 패턴의 종류
- 생성 패턴 (Creational Patterns)
- 구조 패턴 (Structural Patterns)
- 행동 패턴 (Behavioral Patterns)
- 디자인 패턴의 주요 요소
- 패턴 이름
- 문제 및 해결 방법
- 결과 및 응용 사례
- 디자인 패턴의 개념
- 실습:
- 간단한 디자인 패턴 예제
# Singleton 패턴 예제
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # True
Day 2: 생성 패턴 개요
- 강의 내용:
- 생성 패턴의 개념
- 객체 생성의 유연성을 제공하는 패턴
- 주요 생성 패턴
- 싱글턴 (Singleton)
- 팩토리 메서드 (Factory Method)
- 추상 팩토리 (Abstract Factory)
- 빌더 (Builder)
- 프로토타입 (Prototype)
- 생성 패턴의 응용 사례
- 리소스 관리, 객체 생성 제어, 복잡한 객체 생성
- 생성 패턴의 개념
- 실습:
- 간단한 생성 패턴 예제
# Factory Method 패턴 예제
class Product:
def operation(self):
pass
class ConcreteProductA(Product):
def operation(self):
return "ConcreteProductA"
class ConcreteProductB(Product):
def operation(self):
return "ConcreteProductB"
class Creator:
def factory_method(self):
pass
def some_operation(self):
product = self.factory_method()
return f"Creator: The same creator's code has just worked with {product.operation()}"
class ConcreteCreatorA(Creator):
def factory_method(self):
return ConcreteProductA()
class ConcreteCreatorB(Creator):
def factory_method(self):
return ConcreteProductB()
creator_a = ConcreteCreatorA()
print(creator_a.some_operation()) # ConcreteProductA
creator_b = ConcreteCreatorB()
print(creator_b.some_operation()) # ConcreteProductB
Day 3: 싱글턴 패턴 (Singleton Pattern)
- 강의 내용:
- 싱글턴 패턴의 개념
- 싱글턴 패턴이란 무엇인가?
- 하나의 인스턴스만 생성되는 패턴
- 싱글턴 패턴의 구현 방법
- new 메서드를 사용한 구현
- 데코레이터를 사용한 구현
- 싱글턴 패턴의 응용 사례
- 로그 기록기, 데이터베이스 연결
- 싱글턴 패턴의 개념
- 실습:
- 파이썬을 사용한 싱글턴 패턴 구현 예제
# 싱글턴 패턴 - __new__ 메서드 사용
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # True
# 싱글턴 패턴 - 데코레이터 사용
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class Singleton:
pass
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # True
Day 4: 팩토리 메서드 패턴 (Factory Method Pattern)
- 강의 내용:
- 팩토리 메서드 패턴의 개념
- 팩토리 메서드 패턴이란 무엇인가?
- 객체 생성의 책임을 서브클래스에 위임하는 패턴
- 팩토리 메서드 패턴의 구현 방법
- 클래스 상속과 팩토리 메서드 사용
- 팩토리 메서드 패턴의 응용 사례
- 객체 생성의 유연성 제공, 객체 생성의 캡슐화
- 팩토리 메서드 패턴의 개념
- 실습:
- 파이썬을 사용한 팩토리 메서드 패턴 구현 예제
# Factory Method 패턴 예제
class Product:
def operation(self):
pass
class ConcreteProductA(Product):
def operation(self):
return "ConcreteProductA"
class ConcreteProductB(Product):
def operation(self):
return "ConcreteProductB"
class Creator:
def factory_method(self):
pass
def some_operation(self):
product = self.factory_method()
return f"Creator: The same creator's code has just worked with {product.operation()}"
class ConcreteCreatorA(Creator):
def factory_method(self):
return ConcreteProductA()
class ConcreteCreatorB(Creator):
def factory_method(self):
return ConcreteProductB()
creator_a = ConcreteCreatorA()
print(creator_a.some_operation()) # ConcreteProductA
creator_b = ConcreteCreatorB()
print(creator_b.some_operation()) # ConcreteProductB
Day 5: 추상 팩토리 패턴 (Abstract Factory Pattern)
- 강의 내용:
- 추상 팩토리 패턴의 개념
- 추상 팩토리 패턴이란 무엇인가?
- 관련 객체 군을 생성하기 위한 인터페이스 제공
- 추상 팩토리 패턴의 구현 방법
- 추상 팩토리와 구체 팩토리 사용
- 추상 팩토리 패턴의 응용 사례
- 복잡한 객체 군 생성, 제품 계열에 독립적인 객체 생성
- 추상 팩토리 패턴의 개념
- 실습:
- 파이썬을 사용한 추상 팩토리 패턴 구현 예제
# Abstract Factory 패턴 예제
class AbstractFactory:
def create_product_a(self):
pass
def create_product_b(self):
pass
class ConcreteFactory1(AbstractFactory):
def create_product_a(self):
return ConcreteProductA1()
def create_product_b(self):
return ConcreteProductB1()
class ConcreteFactory2(AbstractFactory):
def create_product_a(self):
return ConcreteProductA2()
def create_product_b(self):
return ConcreteProductB2()
class AbstractProductA:
def operation_a(self):
pass
class ConcreteProductA1(AbstractProductA):
def operation_a(self):
return "ConcreteProductA1"
class ConcreteProductA2(AbstractProductA):
def operation_a(self):
return "ConcreteProductA2"
class AbstractProductB:
def operation_b(self):
pass
class ConcreteProductB1(AbstractProductB):
def operation_b(self):
return "ConcreteProductB1"
class ConcreteProductB2(AbstractProductB):
def operation_b(self):
return "ConcreteProductB2"
factory1 = ConcreteFactory1()
product_a1 = factory1.create_product_a()
product_b1 = factory1.create_product_b()
print(product_a1.operation_a()) # ConcreteProductA1
print(product_b1.operation_b()) # ConcreteProductB1
factory2 = ConcreteFactory2()
product_a2 = factory2.create_product_a()
product_b2 = factory2.create_product_b()
print(product_a2.operation_a()) # ConcreteProductA2
print(product_b2.operation_b()) # ConcreteProductB2
Day 6: 생성 패턴 종합 연습
- 강의 내용:
- 종합 연습 문제 풀이
- 싱글턴 패턴, 팩토리 메서드 패턴, 추상 팩토리 패턴 문제 해결
- 생성 패턴의 응용
- 다양한 실생활 문제에서의 응용 사례
- 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 해결 및 결과 분석
### 종합 연습 문제 예시
1. 싱글턴 패턴을 사용하여 로그 기록기를 구현하세요.
2. 팩토리 메서드 패턴을 사용하여 다양한 형태의 도형 객체를 생성하세요.
3. 추상 팩토리 패턴을 사용하여 GUI 구성 요소를 생성하세요.
이 강의는 파이썬의 디자인 패턴, 특히 생성 패턴의 기본 개념과 구현을 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > 디자인패턴과 코딩컨벤션' 카테고리의 다른 글
[디자인패턴] Week 28: 파이썬 디자인 패턴 III - 행동 패턴 (0) | 2024.06.02 |
---|---|
[디자인패턴] Week 27: 파이썬 디자인 패턴 II - 구조 패턴 (0) | 2024.06.02 |
[코딩컨벤션] Week 25: PEP8 스타일 가이드 및 코딩 포매팅 도구, 코드 품질 관리 도구 (0) | 2024.06.02 |