observable

이재홍·2022년 6월 22일
0

https://www.youtube.com/watch?v=KDiE5qQ3bZI&ab_channel=%EC%96%84%ED%8C%8D%ED%95%9C%EC%BD%94%EB%94%A9%EC%82%AC%EC%A0%84

https://rxjs.dev/guide/observable
https://reactivex.io/documentation/ko/observable.html

https://feel5ny.github.io/2018/11/25/Async_05/

https://steadev.tistory.com/57

https://velog.io/@haero_kim/%EC%98%B5%EC%A0%80%EB%B2%84-%ED%8C%A8%ED%84%B4-%EA%B0%9C%EB%85%90-%EB%96%A0%EB%A8%B9%EC%97%AC%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4

observable 에 지식이 없어서 이것저것 찾아봤다


옵저버 패턴이란?

시야를 밣히고 유닛을 감지하는 역할을 하는.....

Observer는 관측자, 감시자라는 뜻이다.

즉, 말 그대로 무언가를 감시하는 역할을 한다는 뜻이다.

프로그래밍에서 Observer패턴이라 함은 어떤 Event가 일어나는 것을 감시하는 패턴을 의미함.

키보드를 눌렀을 때, 어떤 버튼을 눌렀을 때, API의 응답 데이터가 수신됐을 때

함수로 직접 요청한 적 없지만 시스템에 의해 발생하는 동작들을 이벤트! 라고 하는데
이러한 이벤트들을 감시하고, 발생할 때마다 미리 정의해둔 어떠한 동작을 즉각 수행하게 해주는 프로그래밍 패턴을 옵저버 패턴이라고 한다.

옵저버 패턴을 활용하면 다른 객체의 상태 변화를 별도의 함수 호출없이 즉각적으로 알 수 있음
이벤트에 대한 처리를 자주해야하는 서비스라면 매우 효율적이게 프로그램을 작성가능

옵저버 패턴 원리

이벤트를 발생하는 클래스 B가 있고, 이 B 클래스가 발생하는 이벤트를 수신받고 싶어하는 클래스 A가 있는 상황을 가정해보자.
그럼 머릿속으로 이벤트 처리 동작을 이렇게 구현해볼 수 있을 것이다.

  1. B의 이벤트를 수신하기 위해 B를인스턴스화 한다.

    클래스 B 는 이벤트를 정상적으로 발생하고 있지만, A 가 B 를 일방적으로 인스턴스화 한 상황이기 때문에, B 가 자신을 인스턴스화 한 대상에게 접근을 할 방법이 전혀 없다는 점이다. 사실 당연한 이야기이다. 따라서 B 는 A 의 메소드를 호출하지 못 한다.

이럴 떄 인터페이스를 이용하는 것이다.

위 예시에서는 A가 중간에 종을 만들어, B 가 이벤트가 발생할 때마다 A 가 만들어둔 종을 울리도록 한다. A 는 종이 울릴 때마다 이를 알아차리고 이벤트가 감지됐을 때 수행할 동작을 자연스럽게 하는 플로우가 나온다.

둘 사이에 인터페이스를 하나 끼워넣는 방식.
A는 인터페이스를 상속하여 이벤트가 발생할 때마다 실행되게 할 메소드를 구현
B를 생성할 때 인터페이스 구현체를 전달, 이벤트가 발생할 때마다 생성자로 전달받은 A가 구현한 인터페이스 메소드를 호출

이떄, 이 인터페이스를 옵저버 라고 부름!

0개의 댓글