2009-04-10 10 views
0

Je travaille dans la terminologie Delphi (et Delphi), mais ma question est neutre d'un point de vue linguistique. Supposons que vous ayez une classe, TClient, qui envoie des messages à une autre classe, TFacade. Je suppose que les instances de TClient auraient une variable de référence privée de type TFacade. Une méthode quelque part dans TClient créerait une instance de TFacade et l'assignerait à cette variable privée. La classe client TClient devrait utiliser la classe TFacade.Portée et communication entre les objets

Pendant ce temps, TFacade fonctionne avec d'autres classes (appelez-les WorkerClass1, WorkerClass2 et WorkerClass3). Il est probable que les instances de TFacade font la même chose: elles ont des variables privées WorkerClass et créent des instances de WorkerClasses (peut-être dans le constructeur TFacade). Les classes TFacade doivent utiliser les unités WorkerClass.

Alors, comment les informations retournent-elles dans WorkerClasses à TClient? Si TClient est un formulaire, par exemple, il peut recevoir une entrée d'utilisateur qui est utilisée par TFacade - et, à son tour, utilisée par WorkerClasses. Cependant, après que WorkerClasses a manipulé ou utilisé des informations, elles doivent communiquer des informations à TClient (c'est-à-dire que les informations de sortie seront affichées dans le formulaire TClient).

J'espère que c'est clair. Fondamentalement, je demande simplement si Class1 appelle une méthode dans Class2, et Class2 appelle une méthode dans Class3, comment Class3 renvoie-t-il les informations à Class1? Puisque je suis un débutant, n'ayez pas peur d'être trop simple ou trop spécifique dans votre réponse. Je peux gérer :-) il

Merci, comme toujours - Al C.

Répondre

2

J'espère que c'est clair. Fondamentalement, je demande simplement si Class1 appelle une méthode dans Class2, et Class2 appelle une méthode dans Class3, comment Class3 renvoie-t-il les informations à Class1?

Ce n'est pas le cas, car cela couple trop étroitement les claases dans votre conception. Au lieu de cela, Class3 communique uniquement avec Class2. De cette façon, Class1 doit ne rien savoir à propos de Class3, et vice versa. De cette façon, vous pouvez échanger Class1 et Class3 sans avoir à changer autre chose que Class2.

Il existe d'autres idiomes plus avancés pour réduire davantage le couplage, mais c'est suffisant pour commencer.

0

Les informations peuvent être transmises dans les paramètres de fonction et peuvent être renvoyées via la valeur de retour de la fonction.

1

Vous avez plusieurs options à choisir, avec des compromis. Certaines options peuvent ne pas être «bonnes» en fonction de ce que vous voulez réaliser:

  • Utilisez les paramètres de fonction et les valeurs de retour pour déplacer les bits de données.
  • Utilisez les paramètres de référence/de sortie pour collecter des données.
  • Utilisez les fonctions/délégués de rappel.
  • Utiliser les événements (si pris en charge par la langue).
  • Utilisez une instance commune où toutes les informations intéressantes sont rassemblées.
  • Laissez class1 implémenter une interface stable, qui peut être utilisée par class3.
  • Utilisez le stockage central comme la mémoire commune, le fichier, la base de données, etc.
  • Vérifiez les modèles de conception.
  • Vérifiez les expressions idiomatiques dans la plate-forme.
Questions connexes