2011-08-30 14 views
5

Estoy buscando escribir una aplicación. Piensa en e-commerce. Pero piense, un sitio de comercio electrónico impulsado por otro proveedor.¿Qué patrón de diseño sería el mejor para permitir una clase común de múltiples proveedores?

El escenario sería el siguiente: etiquetaría una fachada de un sitio de comercio electrónico que funciona con la plataforma de comercio electrónico existente de un cliente, ya sea Magento, CubeCart, Prestashop, etc.

Estas plataformas van a tener sus propias convenciones de nombres y otras cosas, y quiero una interfaz común dentro de mi aplicación. Por ejemplo:

class Product { 
    var $title; 
    var $price; 
    var $image; 
    var $description; 
    // and so on 
} 

Obviamente, diferentes proveedores pueden llamar las cosas de manera diferente. Por ejemplo, title puede ser product_title en un proveedor, o product_name, o productTitle, y así sucesivamente. Otro ejemplo: price puede ser cost, o unit_price, y así sucesivamente. Esperemos que el problema se vuelva aparente.

Idealmente, quisiera señalar el mejor patrón de diseño para abstraer un servicio de las clases de negocios de mi aplicación, así puedo agregar proveedores sin tener que volver a factorizar nada en mi aplicación más adelante.

¿Qué patrón de diseño sería el mejor para el escenario anterior?

Respuesta

4

me gustaría ir con algo como esto:

enter image description here

Dependiendo de los proveedores que desea integrarse con, es posible que desee agregar adicional Decorators o Facades (por ejemplo, para simplificar API) entre los adaptadores y proveedores reales.

+0

Hola, kstaruch. ¡Eso es genial, y puntos de bonificación para la ilustración! Echaré un vistazo a la integración del patrón de fábrica del adaptador; Ya estaba pensando en seguir esta ruta según mi comentario sobre la respuesta de Naved. –

2

Creo que el patrón de fachada sería mejor agregar proveedores con sus clases de negocios. Sin embargo, el patrón del Adaptador también será bueno para crear la API que se comunica con su API existente.

+0

Gracias, Naved. Echaré un vistazo a esos dos. El patrón abstracto de fábrica parece parecer un candidato potencial también. –

0

Yo diría que con el adaptador o la fachada. El patrón decorador también podría ser utilizado. Brinda a los proveedores la capacidad de agregar ("decorar") productos con información adicional.

Cuestiones relacionadas