[python] 옵저버 패턴을 활용한 API 통지
개요
소프트웨어 개발에서 옵저버 패턴은 객체 간의 일대다 의존 관계를 정의하는 디자인 패턴으로, 어떤 객체의 상태가 변할 때 그 객체에 의존하는 다른 모든 객체에게 자동으로 알림을 전달하는 패턴입니다. 이 패턴을 활용하여 HTTP API에서 데이터 변경 시 옵저버들에게 통지를 하는 방법에 대해 알아보겠습니다.
옵저버 패턴 구현
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def detach(self, observer):
try:
self._observers.remove(observer)
except ValueError:
pass
def notify(self, data):
for observer in self._observers:
observer.update(data)
class Observer:
def update(self, data):
pass
위 코드에서 Subject
클래스는 데이터를 갖는 객체를 나타내며, 데이터가 변경되면 등록된 옵저버들에게 알림을 전달합니다. Observer
클래스는 옵저버 객체를 나타내며, update
메서드를 구현하여 데이터 변경 알림을 받습니다.
API 통지 구현
class ApiSubject(Subject):
def __init__(self):
super().__init__() # Subject 클래스 초기화
def update_data(self, new_data):
# 데이터 업데이트 로직
self.notify(new_data) # 옵저버들에게 데이터 변경 알림
class ApiObserver(Observer):
def update(self, data):
# 데이터 변경에 대한 처리 로직
print(f"데이터가 업데이트 되었습니다: {data}")
위 코드에서 ApiSubject
클래스는 HTTP API의 데이터를 갖는 객체를 나타내며, 데이터가 업데이트될 때 옵저버들에게 알림을 전달합니다. ApiObserver
클래스는 HTTP API의 데이터 변경을 감지하는 옵저버를 나타내며, update
메서드를 구현하여 데이터 변경 시 특정 동작을 수행합니다.
결론
옵저버 패턴을 활용하면 HTTP API에서 데이터 변경 시 옵저버들에게 통지할 수 있으며, 이를 통해 시스템의 유연성과 확장성을 향상시킬 수 있습니다.
참고 문헌:
- Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.