Agrégation

De RAD Studio
Aller à : navigation, rechercher

Remonter à Réutilisation de code et délégation


L'agrégation offre une approche modulaire pour réutiliser du code via des sous-objets qui composent la fonctionnalité d'un objet conteneur mais cachent les détails de l'implémentation de cet objet. Dans l'agrégation, un objet externe implémente une ou plusieurs interfaces. Il doit implémenter, au minimum, IInterface. Néanmoins, le ou les objets internes implémentent également une ou plusieurs interfaces. Toutefois, seul l'objet externe expose les interfaces. C'est-à-dire que l'objet externe expose les interfaces qu'il implémente ou celles que les objets qu'il contient implémentent.

Les clients ne savent rien des objets internes. Bien que l'objet externe fournisse l'accès aux interfaces de l'objet interne, leur implémentation est complètement transparente. Donc, la classe de l'objet externe peut échanger le type de classe de l'objet interne avec toute classe qui implémente la même interface. De même, le code des classes objet interne peut être partagé par d'autres classes qui veulent l'utiliser.

Le modèle de l'agrégation définit explicitement les règles pour implémenter IInterface en utilisant la délégation. L'objet interne doit implémenter deux versions des méthodes IInterface.

  • Il doit lui-même implémenter IInterface en contrôlant son propre compteur de références. Cette implémentation de IInterface surveille la relation entre l'objet externe et l'objet interne. Par exemple, quand un objet de ce type (l'objet interne) est créé, la création ne réussit que pour une interface demandée de type IInterface.
  • Il implémente également une deuxième IInterface pour toutes les interfaces qu'il implémente exposées par l'objet externe. Cette deuxième interface IInterface délègue les appels de QueryInterface, _AddRef et _Release à l'objet externe. L'interface IInterface externe est appelée le "controlling Unknown."

Reportez-vous à l'aide en ligne de Microsoft pour connaître les règles de création d'une agrégation. Quand vous écrivez vos propres classes d'agrégation, vous pouvez aussi vous référer aux détails de l'implémentation de IInterface dans TComObject. TComObject est une classe COM qui supporte l'agrégation. Si vous écrivez des applications COM, vous pouvez aussi utiliser directement TComObject comme une classe de base.

Voir aussi