0

J'ai donc un scénario dans lequel une valeur id besoin d'être passé entre différents objets mais instanciation de chaque objet est dans l'ordre hiérarchique.Quelle méthode de passage de messages est adapté si un besoin de valeur à transmettre entre de nombreux objets?

Par exemple:

ObjA 
    - Gets and id from web service 
    Instantiate ObjB - (Obj A passes id to Obj B while instantiating) 
    - Obj B instantiates Obj C (Obj B passes id to Obj C while instantiating) 

Et il va à 5-6 niveau de passage de messages et de l'objet hiérarchique instanciation.

Mais le passage de messages entre les objets lors de l'instanciation semble redondant. Donc, je pense que ce serait mieux si je fais une classe singleton et que chaque objet accède à la même valeur dans un singleton? Ou y a-t-il un meilleur moyen?

+0

vous pouvez aussi e l'encre en tant que contexte (les données dans les objets étant dans le contexte de cet identifiant). Ensuite, vous pouvez avoir un type de conteneur avec l'ID et les messages connexes stockés dans celui-ci. – BitTickler

+0

Désolé, je ne vous comprends pas. Je vous serais reconnaissant si vous pouvez me montrer un échantillon de code. :) –

+0

Singleton est un anti-pattern. Il rend le code impossible à tester et empêche le multi-threading. Passer l'ID (ou un objet contextuel contenant l'ID) est correct. –

Répondre

0

Peut-être que tous vos objets pourrait se prolonger d'une interface commune. permet de dire

Interface SomeObject{} 

maintenant à la couche la plus haut, vous pouvez créer une liste

final List<SomeObject> objects = Arrays.asList(new Object1(), new Object2() and so on); 

Maintenant, quand vous obtenez l'ID, vous pouvez exécuter (en utilisant cette liste sera également maintenir l'ordre de mise en Ids si cela est important.

for(SomeObject obj: objects){ 
    obj.setId(ID); 
} 

ou vous pouvez utiliser un flux pour le faire en moins de lignes de code.