Observer Pattern - Wikipedia

Overview

Observer 패턴은 주제라는 객체가 관찰자라고 하는 종속 항목의 리스트를 유지 관리하고 메서드 중 하나를 호출하여 상태 변경 사항을 자동으로 알리는 소프트웨어 디자인 패턴이다.

주로 “이벤트 기반" 소프트웨어에서 분산 이벤트 처리 시스템을 구현하는 데 사용됩니다. 이러한 시스템에서 주체는 일반적으로 “이벤트의 Stream", “이벤트의 Stream Source”로 명명되는 반면 Observer는 “이벤트의 싱크" 라고 불린다.

스트림 명명법은 Observer가 물리적으로 분리되어 주체/스트림 소스에서 방출된 이벤트를 제어할 수 없는 물리적 설정을 암시합니다.

이 패턴은 시작 시 CPU에서 사용할 수 없는 일부 입력에서 데이터가 도착하는 모든 프로세스(HTTP 요청, GPIO 데이터, 키보드/마우스/분산 데이터베이스의 사용자 입력, 블록 체인 등)에 완벽하게 적합합니다. 대부분의 현대 프로그래밍 언어는 Observer 패턴 구성 요소를 구현하는 내장된 “이벤트" 구조를 포함한다. 의무적인 것은 아니지만, 대부분의 “관찰자” 구현은 subject-events와 커널에 의해 제공되는 다른 support 메커니즘을 청취하는 백그라운드 스레드를 사용한다.

Which problems can the Observer design pattern solve?

종속 개체의 상태를 직접 업데이트하는 하나의 개체(주체)를 정의하여 개체 간의 일대다 종속성을 정의하는 것은 개체를 특정 종속 개체에 연결하기 때문에 유연하지 않습니다. 그래도 성능 관점에서 또는 객체 구현이 밀접하게 결합된 경우(초에 수천 번 실행되는 저수준 커널 구조를 생각해 보십시오) 의미가 있을 수 있습니다.

밀접하게 결합된 개체는 일부 시나리오에서 구현하기 어려울 수 있으며, 서로 다른 인터페이스를 가진 다양한 개체를 참조하고 이에 대해 알고 있기 때문에 재사용하기 어려울 수 있습니다. 다른 시나리오에서는 컴파일러가 컴파일 타임에 오류를 감지하고 CPU 명령 수준에서 코드를 최적화할 수 있으므로 밀접하게 결합된 개체가 더 나은 옵션이 될 수 있습니다.

What solution does the Observer design pattern describe?