Je n'ai jamais lu d'explication claire, quelle est la tienne?
Mise à jour: j'ai oublié décorateur :)
Je n'ai jamais lu d'explication claire, quelle est la tienne?
Mise à jour: j'ai oublié décorateur :)
Adaptateur s'adapte à une classe/objet d'une nouvelle interface. Dans le cas de l'ancien, l'héritage multiple est généralement employé. Dans ce dernier cas, l'objet est enveloppé par un adaptateur conforme de l'objet et de circuler. Le problème à résoudre ici est celui de la non-interfaces compatibles.
La façade est plus comme une simple passerelle à un ensemble complexe de fonctionnalité. Vous faites une "boîte noire" pour vos clients de s'inquiéter moins, c'est à dire de rendre les interfaces plus simples.
Proxy fournit la même interface que le proxy-pour la classe et, généralement, fait un peu de ménage choses sur son propre. (Donc au lieu de faire plusieurs copies d'un objet lourd, X
vous de faire des copies d'un léger proxy P
qui gère X
et traduit vos appels.) Vous êtes à la résolution du problème du client d'avoir à gérer un lourd et/ou des objets complexes.
Décorateur est utilisé pour ajouter plus de poudre à vos objets (notez le terme d'objets -- vous généralement décorer des objets dynamiquement à l'exécution). Vous n'avez pas masquer ou altérer les interfaces existantes de l'objet, mais simplement l'étendre au moment de l'exécution.
Maintenant que vous avez décorateur, vous voulez probablement savoir pourquoi mettre l'accent sur le mot objet -- certaines langues (comme Java), il suffit de ne pas autoriser l'héritage virtuel (c'est à dire de l'héritage multiple en C++) pour vous permettre de vous accomplir cela, au moment de la compilation.
Depuis que nous avons glissé dans plusieurs héritages (et le redoutable diamant-vous regarder dehors pour mixin -- qui sont commandés linéaire chaînage des interfaces , afin de contourner les problèmes de l'héritage multiple. Cependant, mixin ne se mélangent pas très bien. Et nous nous retrouvons avec des traits -- oui, ces apatrides peu de gouttes de comportement que vous voyez pop-up tout le temps dans les paramètres de modèle en C++. Les Traits d'essayer d'aborder les questions de la composition et de la décomposition de comportement dans une élégante manière, tout ne va pas, soit pour de multiples héritages ou ordonné de chaînage.
Façade
Vous pouvez utiliser une façade, par exemple, de faire des appels à l'API de plus facile. Jetez un oeil à cet exemple d'une distance de façade. L'idée ici est que la pleine mise en œuvre du code sur le serveur est caché par le client. Le client appelle 1 méthode de l'API qui, à son tour, peut faire 1 ou plusieurs appels de l'API sur le serveur.
Adaptateur
Un bon exemple de ceci peut être trouvé ici, sur Wikipédia. Un client de l'objet Source
voudrais appeler une méthode sur un autre objet Target
, mais que d'autres objets de l'interface diffère de ce que le client attend.
Entrez l'objet de la carte.
Il peut prendre un appel de l' Source
objet et, en coulisses, appelez l' Target
méthode qui devrait être utilisée.
Source->CallMethodAOnTarget() ---< Adaptor.CallMethodAOnTarget() this calls ---> Target.MethodWithDifferentSignatureAndName(int i)
Comme pour le Proxy, je n'ai aucune expérience de ce modèle de conception.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.