hand first設計モード--オブザーバーモード
Java apiによるオブザーバーモードの実行
1.プッシュ・モード(すべての観察者に同じデータがトピックによって生成される)
テーマ
観察者
2.プルモード(観察者によって所望のデータを選択的に取得)
テスト
注意観察はいずれも結果が無秩序であることを示す.
欠点:
トピッククラスは他のクラスを継承できません.
せっけいげんり
インタラクティブオブジェクト間の松結合の設計
1.プッシュ・モード(すべての観察者に同じデータがトピックによって生成される)
テーマ
public class WeacherData extends Observable {
private int data1;
private int data2;
public void update(){
this.setChanged();
// WeacherData
this.notifyObservers(this);
}
public int getData1() {
return data1;
}
public int getData2() {
return data2;
}
public void setData(int data1,int data2){
this.data1 = data1;
this.data2 = data2;
}
}
観察者
public class ClientData implements Observer {
Observable obser;
private int data1;
private int data2;
public ClientData(Observable obser){
this.obser = obser;
obser.addObserver(this);
}
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
if(o instanceof WeacherData ){
WeacherData w = (WeacherData)arg;
//data = w.getData1();
data1 = w.getData1();
data2 = w.getData2();
display();
}
}
public void display(){
System.out.println("data1 is "+data1+" and data2 is "+data2);
}
}
2.プルモード(観察者によって所望のデータを選択的に取得)
public class WeacherData extends Observable {
private int data1;
private int data2;
public void update(){
this.setChanged();
//
this.notifyObservers();
}
public int getData1() {
return data1;
}
public int getData2() {
return data2;
}
public void setData(int data1,int data2){
this.data1 = data1;
this.data2 = data2;
}
}
public class ClientData implements Observer {
Observable obser;
private int data1;
private int data2;
public ClientData(Observable obser){
this.obser = obser;
obser.addObserver(this);
}
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
if(o instanceof WeacherData ){
WeacherData w = (WeacherData)o;
// ,
data1 = w.getData1();
//data2 = w.getData2();
display();
}
}
public void display(){
System.out.println("data1 is "+data1+" and data2 is "+data2);
}
}
テスト
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WeacherData data = new WeacherData();
ClientData client = new ClientData(data);
data.setData(1, 2);
}
}
注意観察はいずれも結果が無秩序であることを示す.
欠点:
トピッククラスは他のクラスを継承できません.
せっけいげんり
インタラクティブオブジェクト間の松結合の設計