2013-04-14 4 views
0

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

Мой вопрос довольно прост: Является ли шаблон проектирования медиатора хорошим выбором при разработке приложений для Android?

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

Если нет какой-либо подстроки шаблону посредника, вы можете использовать для сбора ваших экземпляров разных объектов?

+0

Как вы хотите использовать медиатор? Вы, вероятно, хотите избежать синглтона. –

+0

@ MaciejGórski, например, у меня есть объект пользователя, о котором должны знать все мои действия. И почему я хочу избежать синглтона? –

ответ

2

Предлагаю создать класс модели (назовем его MyModel) и создать объект этого класса в Application.onCreate (не Activity.onCreate).

После этого добавления геттера для того, чтобы вы могли получить эту модель из любого Activity или Service как это:

MyApplication app = (MyApplication) getApplication(); 
MyModel model = app.getMyModel(); 
User user = model.getCurrentUser(); 

и т.д.

также создание BaseActivity класса может спасти вас вводить, если вы создаете метод protected MyModel getModel(), который возвращает модель из первых двух строк кода выше.

Edit:

Вам нужно создать класс, который расширяет Application и зарегистрировать этот класс в AndroidManifest.xml.

Это как: https://stackoverflow.com/a/2929927/2183804

Edit (около одноплодной):

Это называется антишаблоном (не только на Android). В Android я видел людей, заканчивающихся синглоном с помощью аксессуаров, таких как MySingleton.getInstance (Context), потому что им все равно нужен контекст, например. для доступа SharedPrefs или DB. Для этого используется приложение, поэтому нет необходимости создавать дополнительную хакерскую сущность, которая может быть использована неверно: MySingleton.getInstance (null) из места, где нет контекста. Это может привести к NPE после того, как процесс будет убит и перезапущен.

+0

Как создать его на Application.onCreate()? где я могу найти это. И разве вы не предлагаете синглтон? –

+0

Приложение является еще одним компонентом. Существует только один экземпляр, но он не является одиночным (не имеет статического доступа). См. Мое редактирование. –

+0

Спасибо или ваш ответ было очень полезно, если бы вы случайно объяснили мне, почему вы хотите избежать синглтона? –