java内置的观察者模式:
1.
让subject扩展Observable(意即可观察者)类,Observable类已经定义好了register,delete,notify()等方法,直接使用即可,那可以在subject中移除自己的这些方法.有一点需注
意,在
notify()时必须先调用setChanged()方法,此方式表明状态更新.
2.让observerDispaly继承Observer(java.util.Observer)接口,实现接口里的update()方法...
例子如下:
import java.util.Observable;
import java.util.Observer;
import object.oberver.dao.DisplayMent;
import object.oberver.dao1.NetPublisher;
public class Suberscriber_in_java implements Observer,DisplayMent {
Observable observable;
private String name;
private String type;
public Suberscriber_in_java(Observable observable){
this.observable=observable;
observable.addObserver(this);
}
public void update(Observable o, Object arg) {
if(o instanceof NetPublisher){
NetPublisher np=(NetPublisher)o;
//拉出数据了
this.name=np.getName();
this.type=np.getType();
display();
}
}
public void display() {
System.out.println(name+" "+type+"更新了");
}
}
import java.util.Observable;
import java.util.Observer;
public class NetPublisher extends Observable {
private String name;
private String type;
public void setNewMessage(String name,String type){
this.name=name;
this.type=type;
setChanged();
notifyObservers();
}
//?用于拉的message
public String getName() {
return name;
}
public String getType() {
return type;
}
}
?写一个test
import object.oberver.dao1.NetPublisher;
import object.observer.impl.Suberscriber_in_java;
public class Test_in_java {
public static void main(String[] args) {
NetPublisher np=new NetPublisher();
Suberscriber_in_java sij=new Suberscriber_in_java(np);
np.setNewMessage("我改?了", "?型是哈哈");
}
}