Puntatori alle funzioni e classi derivate

1

Quindi ho una classe Signal e una classe client che gestisce un elenco di oggetti Signal. La classe fornisce un sacco di interfacce, una delle quali è una funzione update () -.

Il codice update () - è completamente diverso per ogni segnale. Quindi, si potrebbe supporre che sia un lavoro per la derivazione.

Tuttavia, il client gestisce decine, forse anche un centinaio di oggetti Signal diversi. Non c'è modo che io voglia avere queste molte classi di bambini.

Sto pensando di introdurre un membro updateFunction, che è un tipo di puntatore a funzione. Ora, il client può impostare questa funzione (magari tramite costruttore) durante il processo di creazione del segnale. Quindi, il client può chiamare update () per ciascun oggetto Signal e la funzione update () - chiama il puntatore della funzione internamente.

Potresti suggerire? C'è uno schema per questo?

    
posta lugge86 10.02.2016 - 12:40
fonte

1 risposta

4

Se si dispone di più tipi di segnali che devono essere aggiornati in modi diversi, la soluzione più pulita consiste nel creare una sottoclasse per ogni tipo di segnale, in cui le sottoclassi implementano solo i comportamenti update diversi.

La proposta per l'archiviazione di un puntatore a funzione nella classe Signal sta semplicemente emulando manualmente ciò che il compilatore fa per te quando crei una sottoclasse con lo svantaggio aggiunto che i programmatori di manutenzione (incluso te tra qualche mese) avranno più difficile capire il codice.

    
risposta data 10.02.2016 - 16:05
fonte

Leggi altre domande sui tag