Sto cercando di progettare l'architettura di un sistema che implementerò in C ++, e mi chiedevo se le persone potessero pensare ad un buon approccio o criticare l'approccio che ho progettato fino ad ora.
Prima di tutto, il problema generale è una pipeline di elaborazione delle immagini. Contiene diverse fasi e l'obiettivo è progettare una soluzione altamente modulare, in modo tale che qualsiasi fase possa essere facilmente sostituita e sostituita con un pezzo di codice personalizzato (in modo che l'utente possa avere un aumento di velocità se sa che un certo stadio è vincolato in un certo modo nel suo problema).
Il modo di pensare attuale è qualcosa di simile a questo:
struct output; /*Contains the output values from the pipeline.*/
class input_routines{
public:
virtual foo stage1(...){...}
virtual bar stage2(...){...}
virtual qux stage3(...){...}
...
}
output pipeline(input_routines stages);
Ciò consentirebbe alle persone di sottoclasse le routine_input e di eseguire l'override di qualsiasi fase volessero. Detto questo, ho già lavorato in sistemi come questo, e trovo che le sottoclassi e le cose predefinite tendano a diventare disordinate e possano essere difficili da usare, quindi non sono elettrizzato a scriverne uno io stesso. Stavo anche pensando ad un approccio più STLish, in cui i diversi stadi (ci sono 6 o 7) sarebbero parametri predefiniti del template.
Qualcuno può offrire una critica del modello di cui sopra, pensieri sull'approccio modello o qualsiasi altra architettura che viene in mente?