私はC ++で実装するシステムのアーキテクチャを設計しようとしていますが、人々が良いアプローチを考えたり、これまでに設計したアプローチを批評したりできるのではないかと考えていました。
まず、一般的な問題は画像処理パイプラインです。これにはいくつかの段階が含まれており、目標は高度にモジュール化されたソリューションを設計することです。これにより、任意の段階を簡単に入れ替えてカスタムコードに置き換えることができます(ユーザーが知っている場合は速度を上げることができます)。特定の段階が彼または彼女の問題において特定の方法で制約されていること)。
現在の考え方は次のようなものです:
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);
これにより、人々はinput_routinesをサブクラス化し、必要なステージをオーバーライドできます。とは言っても、私は以前このようなシステムで働いたことがあり、サブクラス化やデフォルトのものが面倒になりがちで使いにくいことがわかったので、自分で書くのはめまいがしません。また、さまざまなステージ(6または7がある)がデフォルトのテンプレートパラメーターになる、よりSTL的なアプローチについても考えていました。
誰もが上記のパターンの批評、テンプレートアプローチに関する考え、または頭に浮かぶ他のアーキテクチャを提供できますか?