본문 바로가기
프로그래밍 놀이터/안드로이드, 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 을 적극 환영하는 바이다.



반응형

댓글