のために私は2つのクラスに適したどのようなデザインパターンを持っている - クラスAとB私のシナリオ
をクラスAは、上位レイヤからのメッセージを受け取り、私が処理するために、クラスBにこのメッセージを転送します。 Bがこのメッセージを処理すると、Bは自身の状態を更新し、いくつかのイベントを生成します。これらのイベントを上位層に送ることができるクラスAのメソッドがあります。
クラスAでsendEventToUpperLayer()を変更することはできません。クラスBの生成イベントとその状態をクラスAに戻すにはどうすればよいですか?私は単にクラスBを破棄し、クラスBのロジックをクラスAに移動する必要がありますか?
public class A {
private B b;
private void processMessage(Message) {
b.processMessage(Message);
}
private void sendEventToUpperLayer() {
}
}
public class B {
public void processMessage(Message) {
// It will generate a few events and update b's state.
// All these events and b's state will need to use class A's method of sendEventToUpperLayer() to forward to upper layer.
}
}
あなたがしようとしていることは正直にはっきりしていません。私は、[Observer Pattern](https://en.wikipedia.org/wiki/Observer_pattern)を見てください。 – freedev
Thanks freedev。実際にオブザーバーパターンが私の心に入ってくる最初のパターンです。しかし、観察者パターンは観察可能な観察者にしか関知しない。私の場合、クラスAは観測可能であるとみなし、クラスAはb.processMessage(Message)を使用してクラスBに通知するので、オブザーバとしてクラスBとみなします。しかし、私の質問は、クラスBはクラスAのメソッドを使用することができます。これは逆の通知ですか? –
コンテナ 'A'をコールバックするのに便利な' B'ラムダ、メソッド、またはオブジェクトに渡して、委譲を試みることもできます。 – freedev