2013-04-14 1 views
0

Je suis assez nouveau à android et après avoir lu un livre et prendre beaucoup de tutoriels, je suis sur le point de créer ma première "vraie" application.Android et le modèle de conception de médiateur

Ma question est plutôt simple: Le modèle de conception de médiateur est-il toujours un bon choix lors de la conception des applications Android?

Si oui y a-t-il des modèles de conception que vous devriez éviter lors de la programmation des applications Android?

Si aucun substitut au modèle de médiateur vous permet d'avoir une collection de vos instances des différents objets?

+0

Comment voulez-vous utiliser mediator? Vous voulez probablement éviter Singleton. –

+0

@ MaciejGórski par exemple j'ai un objet utilisateur que toutes mes activités doivent connaître. Et pourquoi vouloir éviter singleton? –

Répondre

2

Je suggère de créer une classe de modèle (appelons-le MyModel) et de créer l'objet de cette classe dans Application.onCreate (pas Activity.onCreate).

Après que l'ajout getter pour cela, afin que vous puissiez obtenir ce modèle de toute Activity ou Service comme ceci:

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

etc.

également la création d'BaseActivity classe peut vous éviter de taper si vous créez la méthode il protected MyModel getModel() qui renvoie le modèle des 2 premières lignes du code ci-dessus.

Edit:

Vous devez créer une classe qui étend Application et enregistrer cette classe dans AndroidManifest.xml.

Voici comment: https://stackoverflow.com/a/2929927/2183804

Modifier (environ singleton):

Il est dit d'être un anti-modèle (non seulement sur Android). Dans Android, j'ai vu des gens se terminant par singleton avec accesseur comme MySingleton.getInstance (Context), parce qu'ils avaient besoin de Context de toute façon, par exemple. pour SharedPrefs ou accès DB. C'est ce que l'application est pour, il n'est donc pas nécessaire de créer une entité hackish supplémentaire, qui pourrait être utilisée de manière incorrecte: MySingleton.getInstance (null) à partir d'un endroit où il n'y a pas de contexte disponible. Cela pourrait conduire à NPE après le processus est tué et redémarré.

+0

Comment puis-je le créer sur Application.onCreate()? où est-ce que je trouve ceci. Et ce n'est pas ce que vous suggérez un singleton? –

+0

L'application est un autre composant. Il existe une seule instance, mais ce n'est pas un singleton (n'a pas d'accesseur statique). Voir ma modification. –

+0

Merci ou votre réponse c'était très utile pourriez-vous par hasard m'expliquer pourquoi vous voulez éviter singleton? –

Questions connexes