안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
가입하고 나서 첫 글이 질문글이어서 죄송합니다.
검색을 해보았으나 원하는 답을 찾을수가 없어 이렇게 질문 글을 올리게 되었습니다.
"안드로이드 프로그래밍 정복" 이라는 책을 보며 안드로이드를 공부하고 있습니다.
리스너 부분을 공부하고 있는데..
리스너를 구현하는 여러가지 방법 중 액티비티와 뷰에 리스너를 구현하는 방법이 나와있습니다.
액티비티에 리스너를 구현하는 방법(액티비티에 직접 리스너를 implement하는 방법)의 장단점으로
장점
액티비티가 인터페이스를 자체 구현하므로 별도의 클래스 선언이 필요가 없다
액티비티 객체가 이미 존재하므로 리스너 객체를 따로 생성할 필요가 없다
단점
액티비티라는 큰 단위가 하위의 뷰를 위한 메서드를 제공한다는 점이 구조적이지 못하다
리스너가 액티비티에 강하게 종속되는 면에서 기동성이 떨어진다
뷰와 관련된 메서드(리스너를 말함)가 뷰 자신에게 포함되어 있지 않고 부모가 구현을 해주기 때문에 독립성이 떨어진다
이런식으로 책에 나와있는데요
그밖에도 액티비티에 리스너를 구현하는데 있어서 단점이 있을까 하는 부분을 여쭤보고 싶습니다.
그렇지않다면 액티비티는 항상 존재하므로 액티비티에 리스너 구현하는것은 유용한 사용법인지..
아니면 단지 위의 3줄 단점이 크게 작용하므로 지양하는 방법인지.. 실질적인 사용되는지가 궁금합니다




복수의 뷰를 포함할 수 있는 액티비티가 뷰에 관련한 리스너를 가지고 있다는 것은 OOP의 면에서는 올바르지 않을 겁니다. 하지만 자바와는 달리 안드로이드에서의 프로그래밍 자체가 OOP를 100% 지향하는 플랫폼은 아니라고 생각합니다.
개인적인 소견으로는 액티비티에서 리스너를 구현하는 것과, 뷰안에 자체 리스너를 구현하는 것은 개발자의 선택 사항일 뿐 코딩의 효율성을 따질 수 있는 차이는 없다구 보구요. 만약 뷰가 액티비티의 이너클래스가 아닌 외부 클래스로 따로 뺀 상황이라면 본문에 나와있는 것 처럼 독립성이나, 기동성(? 재사용성이라고 하는게 더 나을 수도...) 면에서는 나을겁니다.
오히려 저같은 경우는 위의 방법보다는 가독성이나 여러 이유료 anonymous 로 리스너를 등록하는 것을 선호하는데, 이것은 프로그래밍의 개인적인 취향과 습관일 뿐, 동구이님께서 개인이 아닌 팀에서 개발을 하시게 된다면 그 때는 통일해서 쓰는게 좋겠죠.
너무 이에 대한 고민을 깊게 하실 필요는 없으실 것 같구요, 여러가지 방법으로 리스너를 구현할 수 있다는 정도만 이방식 저방식으로 코딩하시면서 습득하시면 될 것 같습니다.