观察者模式(Observer Pattern)

More detail please refer to: http://www.javaworld.com/javaworld/jw-10-1996/jw-10-howto.html?page=3

=========================================================

import java.util.Observable;

public class Broadcast extends Observable {
private int n =0;
//Constructor
public Broadcast(int n)
{
     System.out.println("Broadcast constructor is invoked");
     this.n=n;    
}
//set method
public void setValue(int n)
{
    System.out.println("Broadcast setValue is invoked, it means the broadcast changed, begin send message out");
    this.n = n;
     setChanged();
    notifyObservers();

    
}
//get  Method
public int getValue()
{
    return this.n;
}

}
===========================================================

import java.util.Observable;
import java.util.Observer;


public class Listener implements Observer {
    
    private Broadcast ov =null;
    //Constructor  method
    public Listener(Broadcast ov)
    {
        System.out.println("Listener Constructor is invoked!");
        this.ov = ov;
    }
    
    @Override
     public void update(Observable obs, Object obj) {
        // TODO Auto-generated method stub
         if  (obs == ov)
        {
            System.out.println("test success print broadcast's info as below:");
            System.out.println(ov.getValue());
        }

    }
        

}

======================================================================
public class ObserverTester {
    
    private  Broadcast ov;
    private  Listener  rcv;
    //Construtor
    public ObserverTester()
    {
         this.ov = new Broadcast(0);
          // Listener need to be notified to listen to whom!
         this.rcv = new  Listener(this.ov);
         // Broadcaster need to know whom should broadcast
         this.ov.addObserver(this.rcv);

    }
    
    public static void main(String[] args)
    {
        System.out.println("ddddddddddddddddddddddd");
        ObserverTester  myObserableTest = new ObserverTester();
        myObserableTest.ov.setValue(8);
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值