Salve
ho il seguente problema di programmazione in C++ (ma penso che l'idioma si possa applicare anche ad altri linguaggi):
ho differenti oggetti (che si può ritenere appartenenti ad una medesima classe base) che presentano ciascuno delle proprietà che possono essere comuni o specifiche
e vorrei definire un frontend comune per accedere a questi oggetti, mentre nel backend vorrei definire l'implementazione di ogni specifico oggetto.
All'inizio avevo pensato subito all'ereditarietà per risolvere questo problema,
ovvero definendo una classe virtuale pura in cui fossero presenti i metodi (pseudo codice):
mentre in ciascuna classe derivata passerei ad implementarecodice:PropertyList GetProperties(); Property GetProperty(Name); void SetProperty(Name, Val);
i metodi in modo specifico per l'oggetto che m'interessa.
A questo proposito però mi è stato fatto notare che esisterebbe anche una seconda soluzione al problema,
ovvero adottare l'idioma pimpl, che mi permetterebbe di svincolarmi anche dall'ereditarietà.
Ho fatto qualche ricerca in internet (pimpl), ma fatico a capire
come possa implementare in differenti modi l'interfaccia che definisco; gli esempi mostrano tutti come separare l'implementazione, ma non capisco come possa sfruttare questa cosa per poterla fare per differenti "classi derivate", visto che nella classe interfaccia il puntatore pimpl fa riferimento solo ad una sola implementazione
dell'interfaccia.