Pregunta

He estado leyendo ambas definiciones y parecen ser lo mismo. ¿Alguien podría señalar cuáles son sus diferencias?

Gracias

¿Fue útil?

Solución

los Patrón de fachada Wiki Page tiene una breve nota sobre esto.

"Se usa un adaptador cuando el envoltorio debe respetar una interfaz particular y debe admitir un comportamiento polimórfico. Por otro lado, se usa una fachada cuando se quiere una interfaz más fácil o más simple para trabajar".

Escuché una analogía que debe pensar en su control remoto universal que ha configurado para trabajar con todos sus diferentes sistemas estéreo: presione "encendido" y enciende su caja de cable, su receptor y su televisor. Tal vez es un cine en casa realmente elegante y atenúa las luces y también dibuja los tonos. Esa es una fachada: un botón/función que se encarga de un conjunto de pasos más complicado.

El patrón del adaptador solo vincula dos interfaces incompatibles.

EDITAR: Una analogía rápida para el patrón del adaptador (basado en los comentarios) podría ser algo así como un adaptador DVI a VGA. Las tarjetas de video modernas a menudo son DVI, pero tienes un viejo monitor VGA. Con un adaptador que se conecta a la entrada de DVI esperada de su tarjeta de video y tiene su propia entrada VGA, podrá hacer que su monitor anterior funcione con su nueva tarjeta de video.

Otros consejos

Adaptador == haciendo que una clavija cuadrada se ajuste a un orificio redondo.

Fachada == Un solo panel de control para ejecutar todos los componentes internos.

Honestamente, muchos patrones podrían implementarse de la misma manera programáticamente: la diferencia está en intención.

El patrón de diseño del adaptador está destinado a 'traducir' la interfaz de una o más clases en una interfaz que el cliente espera usar: el adaptador traduciría las llamadas a la interfaz esperada en la interfaz real que usan las clases envueltas.

El patrón de fachada se usa cuando se desea una interfaz más simple (y nuevamente, podría implementarse de la misma manera envolviendo las clases ofensivas). No diría que está usando una fachada cuando la interfaz existente es incompatible, justo cuando lo necesita Para hacerlo más legible, menos mal diseñado, etc.

Una fachada está diseñada para organizar múltiples servicios detrás de una sola puerta de enlace de servicio. Un adaptador está diseñado para proporcionar una forma de utilizar una interfaz conocida para acceder a una desconocida.

Fachada:

Control de clave: (de diario Artículo de Pankaj Kumar)

  1. El patrón de fachada es más como un ayudante para aplicaciones de clientes
  2. El patrón de fachada se puede aplicar en cualquier punto de desarrollo, generalmente Cuando el número de interfaces crece y el sistema se vuelve complejo.
  3. Las interfaces del subsistema no son conscientes de la fachada y no debería tener ninguna referencia de la interfaz de la fachada
  4. El patrón de fachada debe aplicarse para un tipo similar de interfaces, su propósito es proporcionar una interfaz única en lugar de múltiples interfaces que realice el tipo similar de trabajos

Diagrama de clase de fachada:

enter image description here

Adaptador:

  1. Es un patrón estructural
  2. Es útil trabajar con dos interfaces incompatibles
  3. Eso hace que las cosas funcionen Después de que estén diseñados

Diagrama de clase del adaptador:

enter image description here

Puede encontrar más detalles sobre el adaptador en esta publicación SE:

Diferencia entre el patrón del puente y el patrón adaptador

Diferencias clave:

  1. Fachada define una nueva interfaz, mientras que el adaptador utiliza una interfaz antigua. El adaptador hace que dos interfaces existentes funcionen juntas en lugar de definir una completamente nueva
  2. El adaptador y la fachada son envoltorios; Pero son diferentes tipos de envoltorios. La intención de la fachada es producir una interfaz más simple, y la intención del adaptador es diseñar una interfaz existente

Mira esto trayectoria Artículo también para una mejor comprensión.

La fachada generalmente se contrasta con el adaptador.

+--------------------------------------------------------------+-----------------------------------------------+
|                            Facade                            |                    Adapter                    |
+--------------------------------------------------------------+-----------------------------------------------+
| Simplifies multiple complex components with single interface | Provides differnet interface for an interface |
| Works with multiple components                               | Works with single component                   |
| Control panel is an example                                  | A power adapter is an example                 |
| High-level interface                                         | Low-level interface                           |
+--------------------------------------------------------------+-----------------------------------------------+

Como de costumbre, existen similitudes entre varios patrones. Pero lo vería así:

  • Se utiliza una fachada para encapsular una capa completa y ofrecer algunos métodos para acceder a ella "convenientemente"
  • Se utiliza un adaptador, donde tiene dos componentes que ya deberían funcionar juntos, pero no lo hacen, solo debido a algunas diferencias "sin importancia" en la interfaz.

Intentaré explicar esto en palabras simples, sin mucha formalidad.

Imagina que tienes algunas clases de dominio y de la interfaz de usuario quieres interactuar con ellas. Se puede usar una fachada para proporcionar funciones que se pueden llamar desde la capa de interfaz de usuario para que la capa de IU no conozca ninguna clase de dominio que no sea la fachada. Eso significa que en lugar de llamar a las funciones en las clases de dominio que llama a una sola función de la fachada, que será responsable de llamar a las funciones necesarias de las otras clases.

Un adaptador, por otro lado, se puede usar para integrar otros componentes externos que puedan tener la misma funcionalidad que necesita, pero sus funciones no se llaman de la misma manera. Di que tienes un Car Clase en su dominio y trabaja con un proveedor de automóviles externo que también tiene una clase de automóvil definida. En esta clase, tienes la función car.getDoors() Pero el proveedor externo tiene el equivalente car.getNumDoors(). No desea cambiar la forma en que llama a esta función, por lo que puede usar una clase de adaptador para envolver la clase de automóvil externa para que una llamada a getDoors() del adaptador se delega a getNumDoors() de la clase externa.

El propósito de un

fachada es sencillez

adaptador es interoperabilidad.

El patrón del adaptador permite que dos interfaces, previamente incompatibles, funcionen entre sí. Tiene 2 interfaces separadas en juego.

El patrón de fachada toma una interfaz conocida, que es de bajo nivel/grano fino, y lo envuelve con una interfaz de grano de nivel superior/curso. Tiene una sola interfaz, que se ha simplificado envolviendo con otra.

El adaptador hace que dos interfaces funcionen juntas.

La fachada expone una sola clase a un nivel más alto y más limitado. Por ejemplo, una fachada de modelo de vista solo puede exponer ciertas propiedades de lectura solo de una clase de nivel inferior.

He estado leyendo ambas definiciones y parecen ser lo mismo.

En serio ?

He notado que el término Adaptador a veces se usa para describir lo que es de hecho un Estatal, tal vez porque la palabra es más expresiva.

Por ejemplo, en Marco zend, todos Adaptador Las clases son, de hecho, implementaciones del Estrategia Patrón, porque solo envuelven el código nativo detrás de las clases, para tener varios comportamientos.

Los adaptadores a menudo se usan para envolver un código heredado o "de estilo antiguo".

Fachada

Abraza la complejidad para proporcionar una interfaz más simple. Digamos, por ejemplo, un sistema operativo de computadora abstrae la complejidad del hardware subyacente. O un lenguaje de programación de alto nivel (Python/JavaScript) abstrae la complejidad en comparación con un lenguaje de bajo nivel (C).

Adaptador

Son análogos para un adaptadores de hardware. Di que quieres conectar un USB device a un serial port, necesitarás un USB-serial port adapter.

El patrón del adaptador vincula dos interfaces incompatibles al proporcionar una nueva interfaz.

El patrón de fachada simplifica un subsistema complejo (que tiene múltiples componentes) con una sola interfaz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top