1

ソフトウェア設計について助けが必要です。画像を取得し、それらをフィルターに送信し、画像を 1 つずつ表示するカメラがあるとします。

今、私が望むのは、2 つの画像を待ってから、2 つの画像をフィルターに送信し、両方の画像を画面に送信することです。

私は 2 つのオプションを考えましたが、どちらを選択するか迷っています: 私の Acquisitioner (またはその他の) クラスで、2 つの画像を Filterer クラスに送信する前に待機するキューを配置する必要がありますか? Acquisitionner と Filterer の間に Accumulator クラスを配置する必要がありますか?

どちらも最終的にはうまくいきますが、どちらが優れていると思いますか?

ありがとう!

4

2 に答える 2

1

直接的な答えを得るには、Accumulatorポリシーを別のオブジェクトに実装します。理由は次のとおりです。

過去に同様の設計に取り組んでいたとき、このモデルのさまざまな「アクター」をソースシンクと考えると非常に役立つことがわかりました。ソースオブジェクトは、アタッチされたシンクオブジェクトにイメージを生成または出力できます。このシステムのフィルタまたはアキュムレータは、パイプとして設計されます。つまり、シンクソースの両方のインターフェイスを実装します。一般的なソース、パイプ、およびシンクを接続するためのメカニズムを考え出すと、蓄積ポリシーをパイプとして実装するのは非常に簡単です。パイプは、受信したすべての画像について、奇数のn場合に保持し、それらの両方を出力します。 nn偶数の場合。

このシステムがあれば、ソース (画像ファイル リーダー、ムービー デコーダ、カメラ キャプチャ インターフェイス)、シンク (画像ファイルまたはムービー エンコーダ、ディスプレイ ビューアなど)、およびパイプ (フィルタ、アキュムレータ、エンコーダー、マルチプレクサー) をコードの残りの部分を中断することなく。

于 2012-04-19T20:36:04.440 に答える
0

場合によります。しかし、キューが 2 番目の画像が来るのを待っているだけの場合は、Acquisiter で簡単に実装できると思います。

一方、そこに追加機能を組み込みたい場合は、追加されたモジュール性とそれに付随するすべての利点が少しも損なわれることはありません.

この特定のケースでは、それほど重要ではないと思います。

于 2012-04-19T20:32:44.443 に答える