Page 27 -
P. 27

1   인자의 데이터를 왼쪽부터 순서대로 통지하는 Flowable을 just 메서드로 생성한다.
                     2    filter 메서드는 Flowable이 통지하는 데이터를 1건씩 받아 해당 데이터를 통지한다면 true를 반환하고, true
                       인 데이터를 통지하는 Flowable을 생성한다. data는 'data % 2= =0' 계산식으로 Flowable로부터 받은 통지       1
                       데이터가 짝수인지를 판단한다.
                     3    map 메서드는 Flowable이 통지하는 데이터를 1건씩 받아 이를 변환해 통지하는 Flowable을 생성한다. 여기서는
                       'data * 100' 계산식으로 전달받은 데이터를 100배 한다.                                          RxJava의 기본

                     실행 결과
                      data=200
                      data=400
                      data=600
                      data=800
                      data=1000


                    이처럼 데이터를 메서드 체인에 통과하게 해 원본 Flowable/Observable이 통지하는 데이터를
                                                                                        6
                    최종으로 어떤 데이터로 통지할 것인지를 제어할 수 있습니다. 이것은 GoF(Gang of Four)  디자인
                    패턴의 하나인 빌더(builder) 패턴과 유사하며, 연산자를 설정한 시점에서 그 처리가 실행되는 것

                    이 아니라 통지 처리가 시작되고 통지를 받는 시점에 설정한 처리가 실행됩니다. 하지만 RxJava
                    의 메서드 체인은 빌더 패턴과 달리 연산자를 설정한 순서가 실행하는 작업에 영향을 미치기 때문
                    에 주의해야 합니다.

                    그리고 RxJava는 함수형 프로그래밍의 영향을 많이 받아 메서드 대부분이 함수형 인터페이스를
                    인자로 받습니다. 그래서 이 함수형 인터페이스의 구현은 함수형 프로그래밍의 원칙에 따라 같은
                    입력을 받으면 매번 같은 결과를 반환하며, 기본으로 그 입력값과 처리는 외부 객체나 환경에 의

                    해 변화가 일어나지 않아야 합니다.

                    전달받은 데이터의 상태를 변경하거나 처리 작업의 외부에 어떤 변화를 주는 것을 부가 작용(side
                    effect)이라고 하는데, 특히 데이터를 통지하고 소비자가 전달받기까지는 부가 작용의 발생을 피하
                    는 것이 좋습니다. 부가 작용이 발생하는 처리 작업은 객체의 상태를 변경해 외부에서도 참조 가
                    능한 객체에 어떤 변화를 주거나 파일이나 데이터베이스의 내용을 변경하는 것을 말합니다. 즉,
                    외부의 상태 변경이 데이터 통지 처리에 영향을 주는 것을 피하지 않으면 책임 범위가 넓어져 단

                    순한 처리라도 관리가 어렵습니다. RxJava에서는 기본으로 부가 작용이 발생하는 처리는 메서드
                    체인 도중이 아니라 최종으로 데이터를 받아 처리하는 소비자 측에서 이루어지는 것이 좋습니다.




                    6   역주  GoF 디자인 패턴이란 객체지향 개념에 따른 설계 중에서 재사용할 때 유용한 설계를 디자인 패턴으로 정립한 것으로, GoF라고 불리는
                       에릭 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 브리시즈(John Vlissides) 네 명이 제한했습니다.

                                                                                                  035





     RxJava 리액티브 프로그래밍(본문)최종.indd   35                                                      2019-03-26   오전 11:26:31
   22   23   24   25   26   27   28   29   30   31   32