Sto lavorando a un'applicazione basata su slide in C++. Ogni diapositiva ha una collezione slide-oggetti che può includere elementi come didascalia, pulsante, rettangolo, eccCome dovrei progettare un set di classi correlate dove solo alcune supportano una determinata operazione?
Solo alcuni di questi elementi supportano riempimento, mentre altri non lo fanno .
Qual è il modo migliore per implementare il riempimento per gli elementi della diapositiva in questo caso? Qui ci sono due modi in cui ho pensato di:
creare un'interfaccia
Fillable
e implementare questa interfaccia per gli elementi di scorrimento che supportano riempire, mantenendo tutte le proprietà relative a riempire nell'interfaccia. Quando si scorre l'elenco degli elementi della diapositiva, dynamic_cast li inFillable
e, in caso di esito positivo, eseguire l'operazione relativa al riempimento.Fare una classe
fill
. Crea un puntatorefill
una parte della classe elemento della diapositiva, assegna l'oggettofill
al puntatorefill
per quegli oggetti che supportano il riempimento e per il resto lo mantengono nullo. Dare una funzioneGetFill
, che restituirà ilfill
per gli elementi se esiste altrimenti restituisceNULL
.
Qual è l'approccio migliore per questo? Sono interessato alle prestazioni e alla manutenibilità.
Si chiama interfaccia fat, ed è un antipattern. –
@Armen Tsirunyan: Ok, giusto. Se c'è un antipattern, deve esserci anche lo schema giusto per questo. Puoi certamente spiegarmelo :) Oh e se la tua soluzione contiene il doppio delle classi (adattatori o quant'altro) non mi interessa .. – duedl0r
@ duedl0r: Temo di aver letto tutto il paragrafo sbagliato, scusa. –