Quelqu'un pourrait-il s'il vous plaît expliquer quand je voudrais utiliser la délégation au lieu d'héritage?
Ils n'ont rien à faire ensemble. La délégation est un comportement. L'héritage est une technique de modèle.
L'héritage est pour la modélisation "IS-A". Un système électronique d'ordinateur "est-a".
La délégation est la manière dont les méthodes fournissent des résultats. Parfois, un objet déléguera du travail à un autre objet. La délégation peut être via toute relation - vous pouvez déléguer à une superclasse, à un membre d'un composite ou d'agrégat, ou de toute relation.
Vous pouvez utiliser la délégation vers plusieurs instances de classe internes pour simplifier leur fonctionnalité dans un groupe commun. Si votre langue n'implique pas de multiples héritage par exemple, vous pouvez hériter d'une des bases et d'envelopper l'autre, déléguant les fonctionnalités que vous souhaitez exposer à la mise en œuvre sous-jacente. L'héritage lie également votre classe dans la hiérarchie des classes que vous hérissez d'où, comme pour la délégation, vous pouvez garder votre place dans votre propre hiérarchie et déléguer des appels à un autre.
Supposons que votre classe est appelée b et le dérivé/délégué à la classe est appelé A alors
Voici quelques exemples lorsque l'héritage ou la délégation sont utilisées:
Si
À mon avis, la délégation peut être appelée quand il est temps d'utiliser et que l'héritage est ancrée.
Prise le gemme in_threads Par exemple, il utilise IntHreads Déléguateur pour mettre en œuvre les threads de tout moduleRuby. Avec cela, appelez uniquement les méthodes in_threads sur un tableau, il fonctionnera dans des threads.