Ich versuche, die Architektur eines Systems zu entwerfen, das ich in C ++ implementieren werde, und ich habe mich gefragt, ob die Leute sich einen guten Ansatz vorstellen oder den Ansatz, den ich bisher entworfen habe, kritisieren könnten.
Das allgemeine Problem ist zunächst eine Bildverarbeitungspipeline. Es enthält mehrere Stufen, und das Ziel besteht darin, eine hochmodulare Lösung zu entwerfen, so dass jede der Stufen leicht ausgetauscht und durch einen benutzerdefinierten Code ersetzt werden kann (so dass der Benutzer eine Geschwindigkeitssteigerung erzielen kann, wenn er es weiß dass ein bestimmtes Stadium in seinem Problem auf eine bestimmte Weise eingeschränkt ist).
Das gegenwärtige Denken ist ungefähr so:
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);
Dies würde es den Leuten ermöglichen, input_routines zu unterklassifizieren und die gewünschte Stufe zu überschreiben. Das heißt, ich habe schon in solchen Systemen gearbeitet, und ich finde, dass die Unterklassen und die Standardmaterialien dazu neigen, chaotisch zu werden, und dass es schwierig sein kann, sie zu verwenden, so dass ich nicht schwindlig bin, selbst eines zu schreiben. Ich habe auch über einen STLish-Ansatz nachgedacht, bei dem die verschiedenen Stufen (es gibt 6 oder 7) standardmäßige Vorlagenparameter sind.
Kann jemand eine Kritik des obigen Musters, Gedanken zum Vorlagenansatz oder zu einer anderen Architektur abgeben, die ihm in den Sinn kommt?