8
votes

Meilleur modèle de conception à utiliser: adaptateur ou façade

Je ne peux pas décider de quel modèle convient le mieux au problème suivant.

J'ai un système client qui interagira avec un sous-système distinct. Le sous-système est assez compliqué et j'ai donc besoin d'une interface entre les deux pour simplifier le système client. Cela ressemble à un ajustement parfait pour le motif de façade, mais je pense que le motif de l'adaptateur est trop convivial pour mon problème.

Cela fait-il une différence si l'interface dans le milieu appelle des tâches individuelles sur le sous-système via des appels d'API simples?


0 commentaires

6 Réponses :


9
votes

De votre description, c'est plus en ligne avec la définition acceptée de la façade, mais je dirais que c'est plus d'un débat sémantique que toute autre chose. La façade en général réduit davantage la complexité de l'interface avec un sous-système complet, tandis que l'adaptateur est plus adapté à la modification d'une interface existante ou d'appel à vos besoins spécifiques (par exemple, la fonctionnalité de base est là, mais les types de retour ne sont pas tout à fait ce que vous voulez, etc).


0 commentaires

6
votes

Cela semble clairement être un cas de motif de façade Votre objectif est la simplification plutôt qu'une adaptation réelle.

Façade Définition:

fournir une interface unifiée à un ensemble d'interfaces dans un sous-système. Façade Définit une interface de niveau supérieur qui rend le sous-système plus facile à utiliser.

Adaptateur Définition:

Convertir l'interface d'une classe en Un autre client d'interface attendent. Adaptateur permet aux classes travailler ensemble cela ne pouvait pas autrement à cause de interfaces incompatibles.

Définitions soulevées de: http://dofactory.com/patterns/patterns.aspx < / p>


0 commentaires

0
votes

La différence entre la façade et l'adaptateur est surtout l'intention.

Si ce que vous voulez faire est de simplifier l'interface, vous regardez une façade. Si vous souhaitez adapter l'interface afin de pouvoir être utilisée comme autre chose, c'est un adaptateur.

Mais vraiment, quel est le problème comment vous l'appelez? Ma règle de base est si vous implez une interface existante, vous utilisez probablement l'interface de l'adaptateur. Si vous créez une nouvelle interface simplifiée, c'est une façade.


0 commentaires

7
votes

adaptateur est utilisé lorsque vous souhaitez adapter une interface de classe existante à une autre interface qu'un client s'attend à travailler. Il s'agit généralement d'une délégation ou d'une traduction d'une méthode d'une interface à la méthode correspondante de l'autre.

façade est utilisé lorsque vous souhaitez simplifier un système complexe en exposant un ensemble d'API plus simple pouvant travailler avec un client. Il implique la traduction d'un modèle complexe d'appels d'API en un seul appel d'API.

Votre cas ressemble plus à vous avoir besoin d'une façade qu'un adaptateur. La mise en œuvre de l'adaptateur ne vous donnera pas l'avantage de la simplification de l'API. En fin de compte, peu importe ce que vous appelez. Et ces modèles ne sont pas exclusifs. Vous pouvez mélanger les deux d'une manière qui vous donne le plus d'avantage.


0 commentaires

-3
votes

Façade traite avec une interface, pas la mise en œuvre. Son but est de cacher la complexité interne derrière une seule interface qui semble simple à l'extérieur.


0 commentaires

0
votes

Façade modèle ( un objet qui fournit une interface simplifiée à un corps plus grand du code ) convient à votre cas d'utilisation.

Liste de contrôle pour utiliser la façade: (à partir de l'article Wikipedia lié)

  1. Une interface simple est nécessaire pour accéder à un système complexe.
  2. Les abstractions et les implémentations d'un sous-système sont étroitement couplés.
  3. Besoin d'un point d'entrée à chaque niveau de logiciel superposé.
  4. Système est très complexe ou difficile à comprendre.

    Question SE connexe pour plus de détails sur la façade.

    Qu'est-ce que le modèle de conception de façade?

    Même si la façade et l'adaptateur sont des motifs structurels, l'intention est différente (la réponse Samitgaur a expliqué la partie intention bien).

    Puisque vous ne convertissez pas une interface en une autre interface, l'adaptateur ne sert pas votre objectif.

    Question SE connexe:

    quelle est la différence entre Le motif de la façade et de l'adaptateur?


0 commentaires