책임형 모드의 Observer(관찰자) 모드

5081 단어 관찰자 모드
1. 어떤 대상을 얻기를 원한다면 어떤 대상이 자신에게 의존하는지 신경 쓰지 말고 Observer(관찰자) 모드를 사용할 수 있다.사용법:2.1 관찰된 클래스는 Observable 클래스를 계승하고 데이터가 바뀐 곳(예를 들어 set***();setChanged () 를 추가하고 감청이 필요한 곳에 notify Observers (Object o) 를 사용합니다.2.2 관찰자는 Observer 인터페이스를 실현하고 notify Observers()의 알림에 반응해야 한다.2.3 Observable에 관찰자를 추가합니다.3. 예를 들다
import java.util.Observable;
// 
public class DataObservable extends Observable{
    private int data = 0;
    public static final int OUSHU = 0;
    public static final int JISHU = 1;

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
        setChanged();
        if((data&0x0001)==0){
            notifyObservers(OUSHU);
        } else {
            notifyObservers(JISHU);
        }       
    }

}
import java.util.Observable;
import java.util.Observer;
// 
public class JishuDataObservable implements Observer{

    @Override
    public void update(Observable o, Object arg) {
        // TODO Auto-generated method stub
        if((int)arg == 1){
            System.out.println(" : " + ((DataObservable)o).getData());
        }
    }

}
import java.util.Observable;
import java.util.Observer;
// 
public class OushuDataObserver implements Observer{

    @Override
    public void update(Observable arg0, Object arg1) {
        // TODO Auto-generated method stub
        if((int)arg1 == DataObservable.OUSHU){
            System.out.println(" : " + ((DataObservable)arg0).getData());
        }
    }

}
// 
public class Test {
    public static void main(String[] args){
        DataObservable observable = new DataObservable();

        observable.addObserver(new OushuDataObserver());
        observable.addObserver(new JishuDataObservable());

        observable.setData(1);
        observable.setData(2);
        observable.setData(3);
    }
}
// 123

4. 요약: Observer(관찰자) 모델은 리셋 메커니즘으로 이루어진다.Observer 모드의 취지는 여러 대상 간에 일대다 관계를 정의하여 한 대상의 상태가 바뀔 때 이 대상에 의존하는 다른 모든 대상이 알림을 받고 자동으로 업데이트되는 것이다.5. 참조:http://www.cnblogs.com/jaward/p/3277619.html여기에 링크 내용을 쓰시오

좋은 웹페이지 즐겨찾기