다중 상속이 필요한 것처럼 보이는 적절한 코드 구현에 대한 개념적 문제가 있습니다. 많은 OO 언어에서는 문제가되지 않지만 프로젝트는 Android 용이므로 다중과 같은 것은 없습니다 extends
.
나는 그런 간단한 같은 다른 기본 클래스에서 파생 된 활동의 무리를 가지고 Activity
, TabActivity
, ListActivity
, ExpandableListActivity
, 등 또한 나는에 배치해야합니다 몇 가지 코드 조각이 onStart
, onStop
, onSaveInstanceState
, onRestoreInstanceState
모든 활동 및 기타 표준 이벤트 핸들러.
모든 활동에 대해 단일 기본 클래스가있는 경우 코드를 특수 중간 파생 클래스에 배치 한 다음이를 확장하는 모든 활동을 작성합니다. 불행히도 여러 기본 클래스가 있기 때문에 그렇지 않습니다. 그러나 동일한 코드 부분을 여러 중간 클래스에 배치하는 것은 좋은 방법이 아닙니다.
또 다른 방법은 도우미 개체를 만들고 위에서 언급 한 이벤트의 모든 호출을 도우미에 위임하는 것입니다. 그러나이를 위해서는 도우미 개체가 포함되어야하고 모든 처리기는 모든 중간 클래스에서 재정의되어야합니다. 따라서 첫 번째 접근 방식과 큰 차이는 없습니다. 여전히 많은 코드 복제입니다.
Windows에서 비슷한 상황이 발생하면 하위 클래스 기본 클래스 ( Activity
Android 의 클래스에 "대응" )를하고 적절한 메시지를 한곳에서 트랩합니다.
이를 위해 Java / Android에서 무엇을 할 수 있습니까? Java 계측 ( 일부 실제 예제 포함 ) 과 같은 흥미로운 도구가 있다는 것을 알고 있지만 Java 전문가가 아니며이 특정 사례에서 시도해 볼 가치가 있는지 확실하지 않습니다.
다른 적절한 해결책을 놓친 경우 언급하십시오.
최신 정보:
안드로이드에서 동일한 문제를 해결하는 데 관심이있는 사람들을 위해 간단한 해결 방법을 찾았습니다. ActivityLifecycleCallbacks 인터페이스를 제공 하는 Application 클래스 가 있습니다 . 그것은 우리가 모든 활동의 중요한 사건에 가치를 더하고 가로 채기 위해 필요한 것을 정확하게 수행합니다. 이 방법의 유일한 단점은 API 레벨 14부터 사용할 수 있다는 것입니다. 많은 경우에 충분하지 않습니다 (오늘날 API 레벨 10에 대한 지원은 일반적인 요구 사항입니다).
decordator pattern
. 이것은 최후의 수단이지만 실제로 코드 중복을 피하기를 원합니다. 다른 흥미로운 아이디어가 없다면 귀하의 답변을 수락하겠습니다. "중간체"의 코드를 일반화하기 위해 제네릭을 사용할 수 있습니까?