Архитектура приложения Android: как разделить поведение между всеми экранами - PullRequest
2 голосов
/ 01 октября 2011

Привет, товарищи по кодировке Android,

- это проблема, с которой я сталкиваюсь каждый раз, когда создаю новое приложение.Представьте, что в вашем приложении есть подклассы Activity, ListActivity и MapActivity.Теперь я хочу, чтобы на каждом экране было одно и то же меню параметров, которое появляется, когда пользователь нажимает кнопку меню.Так что я сделал BaseActivity с таким поведением.Но поскольку Java не допускает множественного наследования, я должен написать три BaseActivities для каждого типа Activity.Это ужасно, потому что у меня три раза один и тот же код ... Единственное решение, которое я могу придумать, - сделать некоторые из поведений статичными в одном из этих BaseActivities и сослаться на это в других BaseActivites.Но есть еще много дубликатов ... У кого-нибудь есть более элегантное решение этой проблемы?

Приветствия

1 Ответ

4 голосов
/ 01 октября 2011

Это один из компромиссов для языка с одним наследованием. Вместо дублирования кода путем наследования различных подклассов Activity используется делегат. Это также называется наследованием делегированием. Вы получите функции множественного наследования без обязательств.

Это достигается созданием класса делегата, который имеет все общие функциональные возможности, которые вы хотели бы, затем с помощью "супер" класса вызывать делегата. Для этого все еще потребуется небольшой уровень кода копирования и вставки, но он будет минимальным. В Википедии есть хороший пример шаблона Delegation . Если у вас есть опыт работы с C #, эта форма делегирования похожа, но не ограничивается отдельными методами и не только событиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...