본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Otto library 에 대해서.

by 돼지왕왕돼지 2013. 7. 11.
반응형


 Otto Library 에 대해서.

 

[android] Otto library 에 대해서.


Otto 가 뭐야?


Otto Library 는 open source library 로 간단히 이야기하면, event dispatcher 이다.

Event Bus 라는 dispatcher 가 있고, event producer 와 event subscriber 를 event bus 에 등록하면 이 녀석이 둘을 연결해주는 방식이다.




Otto 는 왜 쓰려는 거야? ( 장점 )


Otto 의 motivation 은 보통 이 구조를 interface 를 이용해서 구현하는데, register 하는 쪽과 당하는 쪽이 interface 에 대해 알고 있어야 하며, 이를 boilerplate 코드로 여겨지는 데서 출발한다. Interface 로 묶이는 경우를 coupling 이라고 볼 수 있을지에 대해서 필자는 온전히 찬성하지는 않지만, Otto 쪽에서는 이를 coupling 이라 여기고 제거하기 위해 사용한다. 또한 interface 를 줄여 코드를 깨끗하게 관리할 수 있다고 한다.




필자가 생각하는 Otto 의 단점


"아직 써보지는 않았지만" Otto 에게도 단점도 많다.


1. 우선 Interface 를 통해 공유되지 않기 떄문에, register 하는 쪽과 당하는 쪽의 연관관계를 실제 프로그램한 사람이 아니면 찾기가 어려울 수 있다. ( 필자의 짧은 경험으로, interface 를 사용한 경우 eclipse 를 통해 쉽게 trace 할 수 있지만, annotation 의 경우 interface 를 사용한 만큼 빠르게 trace 가 안 되는 걸로 여겨진다. )


2. immediate class 에서만 method lookup 을 하기 때문에 ( traverse 하지 않는다. ) subclass 를 사용하는 경우 코드의 혼재를 피할 수 없다. ( 물론 이는 다른 방법으로 회피가 가능할 수 있고, 이것이 추천되지만 all the case 는 아니므로.. ) 





3. interface 는 줄지만, 그에 걸맞는 event class 를 새로 만들어야 하는 수고도 있고, 일반 string 등을 parameter 로 받는 경우가 많을 경우는 원치않는 함수들도 다같이 불릴수도 있다, 또한 subscriber 의 param 은 1개여야만 하며, 이는 concrete class여야만 한다.



비록 이런 단점은 있지만, 분명히 예시로 들어있는, 여러개의 listener callback 을 받아야 하는 class 의 경우 code 는 simple 해질 수 있고, flash 등의 event dispatcher 등에 길들여져 있는 사람이라면 더 쉽게 사용할 수가 있겠다.



필자는 아직 사용해보지 않았을 뿐더러 경험이 그렇게 많지 않은 관계로, 댓글을 통한 communication 을 적극 환영하는 바이다.



반응형

댓글4

  • 똘치숑숑 2013.07.15 18:06

    안녕하세요~~ otto 공부하고있는 청년입니다. ㅠ_ㅠ
    구글 구아바부터 이해하려고 노력중인데. 실제 어느 부분에 사용하면 좋을지
    그리고 얼마나 코드가 단축되며 구조는 어떻게되는지 등 공부하려고하는데
    구글 구아바로 부터 나왔다고하는데 어느점이 유사하며 어느점이 차이가있는걸까요??ㅠㅠ

    구글 구아바도 제대로모릅니다 ㅠㅠ 볼 수 있는 url 링크라도하나쏴주세요~
    답글

    • 글쎄요? 저도 구글 구아바를 잘 몰라요. 그곳에서 나왔다고는 하는데 ㅎㅎ 사용하기 좋은 곳은, Fragment 간의 통신에 쓰기 좋데요.

  • 박야옹™ 2015.12.23 11:49 신고

    아 진짜 존나게 모르겠네요...
    답글