Accès object modèle
Hello,
J'ai un souci au niveau architecture. Voici mes classes concernées :
@interface SGCustomerInfos : NSObject
@property (nonatomic, copy) NSString *name ;
...
@end
J'ai un data controller :
@interface SGDataController : NSObject
- (void)fetchCustomerInfosWithCompletion(void (^)(SGCustomerInfos *customerInfos, NSString *errorMessage))completion ;
@end
Fonctionnement :
Il fait appel à une classe responsable du cache mémoire, s'il trouve l'objet customer infos il le renvoie directement, sinon il fait une requete réseaux pour le récupérer.
Le problème maintenant est que je dois accéder à mon objet customerInfos un peu partout dans l'application. (7 ou 8 écrans, généralement c'est juste pour afficher le nom de client).
J'ai les solutions suivantes :
- Dans chaque contrôleur je demande à mon data contrôleur de faire un fetch et de me renvoyer l'objet customerInfos. C'est une bonne solution je trouve (comme y a le système du cache) mais le problème y aura trop de répétition de code.
- récupérer une fois l'objet et le passer d'un contrôleur à l'autre (à l'initialisation ou en propriété). Le problème avec cette solution c'est que y a des contrôleurs intermédiaires auxquels je dois passer l'objet customerInfos ( dont ils ont pas besoin) pour le passer à leur tour au prochain contrôleur et ainsi de suite.
- Le fameux singleton où j'expose mon objet modèle et up. C'est la mois que je préfère.
Est-ce que vous voyez un pattern adéquat ? ou bien tout simplement comment vous aurez fais ?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Utiliser le Singleton à tout va mène à de l'overuse de ce pattern et souvent à un détournement du pattern là où ce n'est pas nécessaire.
Certes l'injection de dépendance et le passage de proche en proche est gênant car tu as des VC intermédiaires qui n'en n'ont pas besoin. Mais c'est moins choquant qu'un singleton pour cet usage de mon avis perso.
Merci.
Pourquoi cela fait de la duplication de code ?
Solution 3, tu parles d'un singleton du DataController ou d'une classe du modèle ?
Bonjour,
La duplication du code parce que c'est la même requête dans plusieurs contrôleurs différents, pour moi si la donnée ne change pas ç'est une répétition de mettre des requêtes partout dans plusieurs contrôleur pour avoir cette donnée ( même si c'est le cache qui la renvoie).
Exemple :
En fait je cherche un pattern qui me permettrai de partager mes Objets modèles. Je connaissais l'injection de dépendance mais j'ai évoqué le point gênant plus haut.
Je parlais d'un singleton pour l'objet modèle mais je savais d'avance que je n'opterai pas pour cette solution, ma question était dans le but de chercher un pattern nouveau que je connais pas et qui me facilitera un peu les choses.