2015-07-24 3 views
0

Глядя на то, чтобы реорганизовать Google maps Класс активности к чему-то более удобному.Лучшие рекомендации для Android - Рефакторинг большого класса активности

В настоящее время он реализует следующие интерфейсы:

LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, AdapterView.OnItemClickListener

Так же как это, оно содержит целый ряд вспомогательных методов.

У меня есть несколько вопросов, касающихся наилучшего способа сделать это.

  1. Должен ли я создавать статические вспомогательные классы и оставлять свои реализации прослушивателя в классе Activity?

  2. Должен ли я создавать классы-помощники и создавать экземпляры из них, передавая их конструкторам все, что мне нужно? например контексты.

  3. Должен ли я абстрагироваться от класса Activity и реализовывать каждый слушатель в своем собственном классе отдельно?

Заранее спасибо. Я хотел бы следовать какой-то стандарту Android/Java, прежде чем мой технический долг будет расти намного дальше.

ответ

1

Ответ будет зависеть от того, как вы намерены использовать Activity в своем приложении.

  1. Должен ли я создавать статические вспомогательные классы и оставлять свои реализации прослушивателя в классе Activity?
    : Этот подход будет работать отлично, если вы намереваетесь использовать Activity только в одном месте в своем приложении и не должны повторно использовать его в разных частях приложения. Причина в том, что вам нужно будет сделать вспомогательные функции очень гибкими (много, если есть), чтобы иметь возможность повторно использовать эти функции с тем же Activity, но в разных ситуациях и сценариях. См. Вариант 3, противоположный этому.

  2. Должен ли я создавать классы-помощники и создавать экземпляры из них, передавая их конструкторам все, что мне нужно? например контексты.
    Ответ: Это может быть более сложный маршрут, но он даст вам максимальную гибкость в отношении возможностей включения/отключения на картах. Предположим, вы хотите иметь карту, которая делает только 2 вещи. Вы можете создать новый Activity и вызвать 2 вспомогательные функции, которые добавили бы эти 2 функции к карте. В другой части приложения вы можете вызвать дополнительные вызовы вспомогательных функций, чтобы добавить дополнительные функции. Это также сделало бы использование ваших карт наиболее однородными, поскольку все функции добавляются с помощью тех же вызовов вспомогательных функций.

  3. Должен ли я абстрагироваться от класса Activity и реализовать каждый слушатель в своем классе отдельно?
    Ответ: Этот подход следует использовать, если вы намерены повторно использовать ту же самую деятельность в разных частях приложения. Предположим, вы хотите отобразить карту в разделе «О себе» и в разных частях приложения. Все отображаемые карты будут иметь точно такие же функции и будут работать точно так же. (Чтобы добавить немного больше гибкости, вы должны создать Abstract Fragment со всеми реализованными слушателями.Таким образом, вы можете легко использовать ваш Fragment в любой части вашего приложения, просто добавив Fragment.)

    Я бы лично сочетание варианта 2 и 3, потому что, как вы могли бы Fragments вы могли бы добавить в любом месте приложение с любыми функциями, которые вы хотите реализовать.