PYTHON · 객체지향
상태 패턴
상태 패턴으로 객체의 내부 상태에 따라 행동을 변경합니다. 복잡한 조건문을 상태 객체로 대체합니다.
객체지향고급state상태디자인패턴FSM
핵심 설명
상태 패턴으로 객체의 내부 상태에 따라 행동을 변경합니다. 복잡한 조건문을 상태 객체로 대체합니다.
Python code
from abc import ABC, abstractmethod
class State(ABC):
@abstractmethod
def handle(self, context: "TrafficLight") -> None: ...
class RedState(State):
def handle(self, context):
print("🔴 빨간불: 정지")
context.state = GreenState()
class GreenState(State):
def handle(self, context):
print("🟢 초록불: 통행")
context.state = YellowState()
class YellowState(State):
def handle(self, context):
print("🟡 노란불: 주의")
context.state = RedState()
class TrafficLight:
def __init__(self):
self.state: State = RedState()
def change(self):
self.state.handle(self)
def current(self) -> str:
return self.state.__class__.__name__
# 신호등 시뮬레이션
light = TrafficLight()
for _ in range(6):
print(f" 현재 상태: {light.current()}")
light.change()학습 팁
상태 전이 로직을 각 상태 클래스에 캡슐화하면 새로운 상태 추가가 기존 코드를 변경하지 않습니다.
주의할 점
상태 전이 시 이전 상태의 리소스를 해제하지 않으면 메모리 누수가 발생할 수 있습니다.
자주 묻는 질문
상태 패턴란 무엇인가요?
상태 패턴으로 객체의 내부 상태에 따라 행동을 변경합니다. 복잡한 조건문을 상태 객체로 대체합니다.
상태 패턴 학습 시 주의할 점은 무엇인가요?
상태 전이 시 이전 상태의 리소스를 해제하지 않으면 메모리 누수가 발생할 수 있습니다.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.