私は、多くのクラスからなる信号処理経路を持っています。各処理クラスは、より小さいクラスの構成であり、それぞれが独自のパラメータを持っています。プロセスとパラメータを通信するための推奨設計パターンはありますか?
これまで、私は怠惰で、すべての処理パラメータを別のパラメータクラスに格納していました。私はこれをすべての処理クラスのfriend
にして、データメンバーに直接アクセスできるようにしました。しかし、これにより、個々のブロックとパラメータクラスの間の結合が非常に強くなり、設計が完全に柔軟でなくなります。
私は、それぞれの小さなプロセスが結合を減らすために必要な独自のプライベートデータメンバーを所有するように、コードを再設計しています。しかし、新しいパラメータセットがロードされた場合、個別の処理ブロックごとに(アクセサー関数を使用して)すべてのパラメータを設定する複雑なメソッドが必要になります。このメソッド内のコマンドは、プロセスに強力に結合されます。この結合を最小限にするには
これは素晴らしいですね。プロセスが構築された後、コンテキストオブジェクトの値が変更されたとします。どのように私は個々のプロセスが新しい値に従って自分自身を更新することができますか? – learnvst
これは私がこれまでに持っていたものです。FYI:http://stackoverflow.com/questions/10401321/does-this-implementation-of-the-context-pattern-look-ok – learnvst
@learnvstあなたはプロセスを購読することができます)をコンテキスト(パブリッシャ)に渡すため、コンテキストの変更があった場合に自動的にコンテキストによって通知されます。 http://en.wikipedia.org/wiki/Observer_patternを参照してください。パブリッシャ/サブスクライバの責任をコンテキスト自体から切り離すことはできますが、それは難しいかもしれません。 – mloskot