[디자인패턴] 옵저버 패턴(Observer Pattern)이란 무엇인가?
2023. 3. 8. 11:58
Programming/Design Pattern
정의 정말 많이 쓰이는 디자인 패턴 중 하나인 옵저버 패턴은 아래와 같은 정의를 가지고 있다. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로, 일대다(one-to-many) 의존성을 정의한다. 아래의 그림과 같이, 한 Subject가 자신의 상태가 바뀌었음을 다수의 Observer 들에게 통지(Notify)하는 방식을 가지고 있는 패턴이다. 옵저버 패턴은 RxJava, Swing 라이브러리 등 많은 곳에서 활용하고 있는 디자인 패턴이다. 문제 상황 한 신문사가 있고, 이 신문사에서 출간되는 신문을 구독하는 다수의 구독자가 있는 상황을 고려해 보자. 구독자들은 신문이 배달될 때마다 바로 신문을 읽고 싶은 상황이다. 이를 위의 그림과 같이 정리하면 ..
[RxJava] Reactive Streams, RxJava란 무엇인가?
2022. 11. 15. 18:22
Programming/Java
RxJava란 무엇인가? RxJava는 자바에서 리액티브 프로그래밍(Reactive Programming)을 구현하는 데 사용하는 라이브러리이다. 리액티브 프로그래밍(Reactive Programming) 이란? 데이터가 통지될 때마다 관련 프로그램이 반응(Reaction)해 데이터를 처리하는 프로그래밍 방식.이 때, 통지되는 데이터의 흐름을 데이터 스트림(Data Stream) 이라고 한다. RxJava는 데이터를 통지하는 생산자를 생성하고, 통지한 데이터를 소비자가 받아 처리하는 방식을 취하고 있다. 이러한 방식은 디자인 패턴인 옵저버(Observer) 패턴을 확장한 구조라고 볼 수 있다. 아래와 같은 예시 코드를 참고하자. public static void main(String[] args) { F..