2011-08-30 12 views
5

Sto cercando di scrivere un'applicazione. Pensa all'e-commerce. Ma pensa, un sito di e-commerce che è alimentato da un altro provider.Quale modello di progettazione sarebbe meglio consentire una classe comune da più provider?

Lo scenario sarebbe così: avrei white label un fronte sito di e-commerce che è alimentato da piattaforma e-commerce esistente di un cliente, sia esso Magento, CubeCart, Prestashop, o così via.

Queste piattaforme hanno tutte le proprie convenzioni di denominazione e quant'altro, e voglio un'interfaccia comune all'interno della mia app. Ad esempio:

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

Ovviamente diversi fornitori possono chiamare le cose in modo diverso. Ad esempio, title può essere product_title in un provider o product_name o productTitle e così via. Un altro esempio: price può essere cost o unit_price e così via. Speriamo che il problema diventi evidente.

Idealmente, mi piacerebbe essere indicato il miglior design pattern per astrarre un servizio dalle classi di business della mia app, così posso aggiungere provider senza dover ridimensionare nulla nella mia app.

Quale modello di progettazione sarebbe il migliore per lo scenario di cui sopra?

risposta

4

mi piacerebbe andare con qualcosa di simile:

enter image description here

A seconda dei provider si desidera integrare con, si consiglia di aggiungere ulteriori Decorators o Facades (ad esempio per semplificare API) tra gli adattatori e fornitori effettivi.

+0

Ciao, kstaruch. È fantastico e punti bonus per l'illustrazione! Daremo un'occhiata all'integrazione del pattern factory dell'adattatore; Stavo già pensando di seguire questa strada come da mio commento sulla risposta di Naved. –

2

Penso che il modello di facciata sarebbe meglio aggiungere provider con le classi di business. Tuttavia, il modello Adapter sarà anche utile per creare l'API che comunica con l'API esistente.

+0

Grazie, Naved. Daro 'un'occhiata a quei due. Anche il modello astratto della fabbrica sembra un potenziale candidato. –

0

Direi con l'adattatore o la facciata. Il modello decoratore potrebbe anche essere utilizzato. Fornisce ai fornitori la possibilità di aggiungere ("decorare") prodotti con informazioni aggiuntive.

Problemi correlati