Article de reference

Modèle de délégation

En génie logiciel , le modèle de délégation est un modèle de conception orienté objet qui permet la composition d'objets pour obtenir la même réutilisation de code que l'héritag...

En génie logiciel , le modèle de délégation est un modèle de conception orienté objet qui permet la composition d'objets pour obtenir la même réutilisation de code que l'héritage .

Dans la délégation, un objet gère une requête en déléguant à un second objet (le délégué ). Le délégué est un objet d'assistance , mais avec le contexte d'origine . Avec la prise en charge de la délégation au niveau du langage, cela se fait implicitement en faisant selfréférence dans le délégué à l'objet d'origine (expéditeur), et non au délégué (objet récepteur). Dans le modèle délégué, cela se fait plutôt en passant explicitement l'objet d'origine au délégué, en tant qu'argument d'une méthode. Le terme « délégation » est souvent utilisé de manière vague pour désigner le concept distinct de transfert , où l'objet expéditeur utilise simplement le membre correspondant sur l'objet récepteur, évalué dans le contexte de l' objet récepteur , et non de l'objet d'origine.

Cet article utilise « objet d'envoi/objet de réception » pour les deux objets, plutôt que « objet de réception/délégué », en soulignant quels objets envoient et reçoivent l'appel de délégation, et non l'appel d'origine.

Définition

Dans l'introduction de Gamma et al. 1994, la délégation est définie comme :

La délégation est un moyen de rendre la composition aussi puissante pour la réutilisation que l'héritage [Lie86, JZ91]. Dans la délégation, deux objets sont impliqués dans la gestion d'une requête : un objet récepteur délègue des opérations à son délégué . Cela est analogue aux sous-classes qui reportent les requêtes aux classes parentes. Mais avec l'héritage, une opération héritée peut toujours faire référence à l'objet récepteur via la thisvariable membre en C++ et selfen Smalltalk. Pour obtenir le même effet avec la délégation, le récepteur se transmet au délégué pour permettre à l'opération déléguée de faire référence au récepteur.

Exemple

Dans l'exemple ci-dessous (utilisant le langage de programmation Kotlin ), la classe Window délègue l' area()appel à son objet Rectangle interne (son délégué).

classe Rectangle ( val largeur : Int , val hauteur : Int ) { zone amusante () = largeur * hauteur }
classe Window ( val bounds : Rectangle ) { // Délégation fun area () = bounds . area () }

Prise en charge linguistique

Certains langages disposent d'un support intégré spécial pour la délégation. Par exemple, dans le langage de programmation Kotlin,by le mot-clé délègue à l'interface d'un autre objet :

interface ClosedShape { zone de divertissement (): Int }
classe Rectangle ( val largeur : Int , val hauteur : Int ) : ClosedShape { override fun area () = largeur * hauteur }
// L'implémentation ClosedShape de Window délègue à celle du Rectangle qui est 
la classe de limites Window ( private val bounds : Rectangle ) : ClosedShape par bounds

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index