Observable
“이벤트 발생시 동작 최적화” 옵저버블 설계 패턴의 이해
옵저버블(Observable) 설계 패턴은 많은 자바 API에 사용된다. 잘 알려진 사례 중 하나로 ActionListener API를 사용해 동작을 실행하는 JButton이다. JButton에서 ActionListener는 버튼 클릭을 대기하거나 관찰한다. 버튼이 클릭 되면 ActionListener가 동작을 수행한다. 옵저버블 패턴은 리액티브(reactive) 프로그래밍에도 사용된다. 리액티브의 본질은 반응, 즉 다른 프로세스가 발생할 때 무엇인가 일어나는 것이므로 리액티브 애플리케이션과 옵저버는 서로 잘 맞는다. 이처럼 옵저버블은 행동 설계 패턴으로, 그 기능은 이벤트가 발생할 때 동작을 수행하는 것이다. 대표적인 활용 사례는 버튼 클릭과 알림이지만 그 외에도 많은 용도가 있다. 옵저버블 패턴의 예 옵저버블 패턴에서 동작이 수행되면 한 객체가 다른 객체에 이를 알린다. 예를 들어 <그림 1>과 같이 버튼을 클릭해야 하고 다른 객체로의 알림이 없는 시나리오를 가정해 보자. 여기서 ActionCheck는 초당 한 번씩 버튼을 확인해야 한다. 만약 이 버튼에 대해 동작 확인이 매초 여러 번 수행되면 애플리케이션 성능에 좋지 않은 영향을 줄 것이 뻔하다. 이때는 Do Something 버튼이 ActionCheck에 알리도록 하는 편이 훨씬 더 쉽다. 이렇게 하면 ActionCheck 로직은 매초 Do Something 버튼을 폴링할 필요가 없다. 옵저버블 설계 패턴의 요소 <그림 2> 다이어그램에서 옵저버 패턴의 기본이 Observer 인터페이스(관찰하는 객체)와 Subject(관찰되는 객체)임을 알 수 있다. Newsletter 클래스는 Subject를 구현하고 Subscriber는 Observer를 구현한다. 마지막으로 SendEmailMain이 옵저버블 설계 패턴을 실행한다. 옵저버블 패...
옵저버블 설계 패턴
Observable