[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에서 데이터 변경 시 옵저버들에게 통지할 수 있으며, 이를 통해 시스템의 유연성과 확장성을 향상시킬 수 있습니다.

참고 문헌: