Estoy tratando de diseñar la arquitectura de un sistema que implementaré en C ++, y me preguntaba si la gente podría pensar en un buen enfoque o criticar el enfoque que he diseñado hasta ahora.
En primer lugar, el problema general es una tubería de procesamiento de imágenes. Contiene varias etapas, y el objetivo es diseñar una solución altamente modular, de modo que cualquiera de las etapas pueda intercambiarse fácilmente y reemplazarse con un código personalizado (para que el usuario pueda aumentar la velocidad si lo sabe). que cierta etapa está limitada de cierta manera en su problema).
El pensamiento actual es algo como esto:
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);
Esto permitiría a las personas subclasificar input_routines y anular la etapa que quisieran. Dicho esto, he trabajado en sistemas como este antes, y creo que las subclases y las cosas predeterminadas tienden a complicarse, y pueden ser difíciles de usar, por lo que no me marea escribir una. También estaba pensando en un enfoque más STLish, donde las diferentes etapas (hay 6 o 7) serían parámetros de plantilla predeterminados.
¿Alguien puede ofrecer una crítica del patrón anterior, pensamientos sobre el enfoque de la plantilla o cualquier otra arquitectura que se le ocurra?