Pourquoi le cacao utilise-t-il des délégués plutôt que de l'héritage? P>
3 Réponses :
En général, la création d'une sous-classe peut être un processus de consommation de temps, nécessitant de nombreux travaux de base et remplacer diverses méthodes de modèle. p>
Entre-temps, l'utilisation d'un délégué vous permet de créer un objet simple qui répond à quelques questions spécifiques ou réagit de différentes manières. P>
Maintenant, lorsque vous combinez cela avec le dynamisme que vous pouvez réaliser en échangeant des délégués à la volée, il peut créer un système robuste très flexible qui favorise plus de réutilisation de code. P>
Il existe des discussions générales concernant ces choses ici et ici . Vous pouvez également trouver des plus âgées de questions plus anciennes ici et ici . P>
Comment un modèle prend-t-il moins d'efforts pour créer qu'une sous-classe? D'autre part, la capacité d'échanger à la volée pourrait être utile dans certaines circonstances, mais je ne vois pas pourquoi il est nécessaire pour le cacao.
Je ne suis même pas si sûr que c'est moins de travail, mais moins de niveaux d'héritage conduit à un design généralement plus simple. La simplicité est une bonne chose (TM).
Quant à la nécessité. Rien n'est absolument nécessaire, c'est l'opinion des concepteurs-cadres qui étant donné les contraintes de la langue que la composition via la délégation était le meilleur choix de conception qu'ils pouvaient faire. Après avoir travaillé pendant environ un an, je suis enclin à convenir que le choix était un bon. Mais c'était un peu étrange pour moi quand je suis arrivé à Cocaa d'autres langues.
Avec les délégués, vous pouvez avoir un objet être le délégué de nombreux autres objets. Par exemple, votre instance MyController peut être le délégué d'un NSTableView, un NStextField, un NSwindow et tout autre objet composant votre interface. Cela donne un endroit compact pour mettre tout votre code d'interface utilisateur relatif à une section de votre UI. P>
Si vous aviez fait cela avec sous-classement, vous devez créer une sous-classe chaque objet que vous vouliez des rappels. P>
En outre, il s'agit d'un classique Inheritance VS Composition Question P>
Je suppose que c'est vraiment le problème de la composition de l'héritage vs
Bon point sur l'écriture d'un contrôleur pour plusieurs objets de votre interface
discuté en longueur ici: http://www.cocoadev.com/index.pl?extendiseevil P>
et Java les gars le savent aussi: http://www.javaworld.com/javaworld/jw -08-2003 / JW-0801-TOOLBOX.HTML P>
Pourrait aussi bien mettre un commentaire si vous n'allez pas élaborer. Que se passe-t-il si ces liens deviennent morts, comme le premier?
Les délégués simplifient la personnalisation du comportement de l'objet tout en minimisant le couplage entre les classes. L'héritage est définie lors de la compilation, la délégation n'est pas limitée comme celle-là et peut être effectuée au moment de l'exécution.
Je ne sais pas assez sur l'Obj- / Cocoa pour répondre à cette question en dette (sûrement de grandes réponses suivra) mais la SIERC L'argument principal est que l'utilisation de délégués permet un couplage «lâche» puis en utilisant (plusieurs) héritage (impossible à Obj- c).
Qu'est-ce que IIRC? Je n'ai pas entendu parler de cela.
C'est une réponse parfaite chromercédée, vous devriez le poster comme tel