Javaコールバックメカニズムと観察者モードを浅く分析する

1424 ワード

1 javaコールバックメカニズム:
まずjavaコールバックメカニズムを説明します.オブジェクトはいくつかの情報を携帯することができます.これらの情報は、後である時点で初期のオブジェクトを呼び出すことができます.コールバックがポインタによって実現された場合、プログラマーがこのポインタを誤用しないことを望むしかありません.javaは、言語にポインタが含まれていないことに注意してください.
コールバックの価値は、その柔軟性にあります.実行時に呼び出す方法を動的に決定できます.
import static net.mindview.util.Print.*;

interface Incrementable {
  void increment();
}

// Very simple to just implement the interface:
class Callee1 implements Incrementable {
  private int i = 0;
  public void increment() {
    i++;
    print(i);
  }
}	

class Caller {
  private Incrementable callbackReference;
  Caller(Incrementable cbh) { callbackReference = cbh; }
  void go() { callbackReference.increment(); }
}

public class Callbacks {
  public static void main(String[] args) {
    Callee1 c1 = new Callee1();
    Caller caller1 = new Caller(c1);
    caller1.go();
    caller1.go();
  }	
} 

Callerのコンストラクタには、パラメータとしてIncrementableの参照が必要です(コールバックの参照は任意の時点で取得できます).その後、オブジェクトは、この参照コールバックCalleeクラスを使用することができます.
2観察者モードとコールバックメカニズムの関連:
まず、オブザーバーモードを説明します.オブジェクト間で1対以上の依存を定義すると、オブジェクトがステータスを変更すると、依存するオブジェクトが通知され、自動的に更新されます.
我々の前例のコールバック機構はCallerを主題(被観察者)とし,Callee 1を観察者とし,Callerがgo()を呼び出すとCallee 1のincrement()法に状態の変化を通知することができ,もちろん前例は一対一の依存にすぎず,コールバック機構を観察者モードの変体とすることができる.