Каков оптимальный способ совместного использования кода между действиями с различными базовыми классами?

У меня есть следующая проблема:
У меня есть абстрактный класс Activity , который позволяет называть его MyAbstractActivity , который содержит некоторый код, который я бы хотел использовать повторно (например: стандартное служебное вложение, общие пункты меню, общий код инициализации и т. Д.). Обычно я просто использовал его для подкласса моих конкретных действий и делал с ним.

Однако иногда мне нужно использовать другой супертип, например ListActivity или MapActivity .

Поэтому возникает вопрос: как избежать дублирования этого кода поддержки в рамках Activity, если мне нужно использовать другой базовый класс?

Я придумал решение, основанное на шаблоне декоратора, вроде этого:
Оформитель ,

Однако я вижу проблему с этим подходом: что делать с защищенными методами (например, onCreate () )? Должен ли я представить дополнительный класс «мост», который делает их общедоступными с целью декоратора, аналогично тому, как это представлено ниже (начиная немного выглядеть византином …)?

Краевой корпус

Любым другим путем?

Надеюсь, я сделал себя относительно ясно. Заранее благодарим за любые отзывы!

PS. По-моему, использование статических классов утилит не является хорошим решением, так как оно дает возможность трудно идентифицировать ошибки программирования.

Если я правильно понимаю, ни фрагменты, ни шаблон декоратора не являются чистыми или подходящими решениями для того, что вы хотите выполнить. Они были разработаны для решения других проблем.

Я нахожу, что перехожу к «поддерживающему» коду, или к «фреймворкному» коду, или ко всему этому многословному, повторяющемуся, плагинову, к статическим утилитам. Это не обязательно тот подход, который я бы использовал в проекте, отличном от Android, но в моих проектах для Android он отлично работает.

Кроме того, знайте, что вам не нужно подкласс ListActivity иметь ListView.