La différence entre la Façade, Proxy, l'Adaptateur et le Décorateur modèles de conception?
Quelle est la différence entre la Façade, de Proxy, de l'Adaptateur, et le Décorateur design patterns?
Je n'ai jamais lu une explication claire, quelle est la vôtre?
- stackoverflow.com/questions/18618779/...
- l'autre question est seulement d'environ proxy et décorateur
- Incroyable comme certains une question fermée qui se révèlent très utiles.
Vous devez vous connecter pour publier un commentaire.
Adaptateur 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 celle de non compatible avec les interfaces.
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 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 proxyP
qui gèreX
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 à 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.
Puisque nous avons traîné dans plusieurs héritages (et le redoutable diamant-vous regarder dehors pour mixin -- qui sont commandé 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 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 à cette 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 objetTarget
, 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 la
Source
objet et, en coulisses, appelez leTarget
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.