私の現在のデザインでは、それぞれがいくつかのクラスを使用して、それぞれが 周辺デバイスを表しています。各クラスは、出力用のコールバックと同様に、入力のための両方のメソッドと、 のコールバックを提供します。 1つのクラスからの出力は、別のクラスへの入力 として使用されるため、クライアントにすべての コールバックを実装させ、オブジェクト間のすべてのルーティングを処理させるという単純な設計があります。複数のオブジェクト間でデータをルーティングするためのシンプルなデザインですか?
これは、次の簡単な例で示すことができます。私の アプリケーションでは、クラスと入力と出力の数が多くなっています。
interface CentralLockControlCb
{
void onCentralLockStateChanged(bool on);
}
class CentralLockControl
{
void setDoorLockedIndicator(bool locked);
}
interface DoorControlCb
{
void onDoorLockedStateChanged(bool locked);
}
class DoorControl
{
void setCentralLockState(bool on);
}
class Main : public CentralLockControlCb, DoorControlCb
{
private CentralLockControl centrallock;
private DoorControl door;
public static void main(String[] args)
{
clc = new CentralLockControl(this);
dc = new DoorControl(this);
}
void onCentralLockStateChanged(bool on)
{
door.setCentralLockState(on);
}
void onDoorLockedStateChanged(bool locked)
{
centrallock.setDoorLockedIndicator(locked);
}
}
上記の溶液は、クラスは、お互いについて を知っておく必要がありますが、一方で、彼らは今、非常にメインクラスに結合されたように見えることを避けることができます。
代わりに、私は、各クラスに複数のオブザーバーを許可させ、 を許可し、クラスを互いに観察させることを検討しました。もう1つの選択肢として、 はパブリッシャー/サブスクライバのパターンと似ていますが、それは思われます
どのようなデザインをお勧めしますか?
C++で 'public static void main(String [] args)'とは何ですか? (間違ったタグ?) –
パブリッシャー - 購読者とオブザーバーは同じことです。 –
オブジェクトへのポインタを割り当てることができないため、上記のソリューションは動作しません。これはJavaコードによく似ていますが、やはり有効なJavaではありません。だからまず言語を決めてください。あるいは、もっと一般的なオブジェクト指向の問題だと思われるので、すぐに疑似コードとして宣言してください。この場合、C++タグを削除するだけです。 –