java 内置的观察者模式

原创
2015/04/23 12:13
阅读数 94

1、可观察的对象

public class PurchaseDate extends Observable {
private int Id;
private String orderNumber;


public PurchaseDate() {
}


/** 观察对象状态 */
public void measurementsChanged() {
setChanged();// 改变状态 java内置的观察者模式的方法
notifyObservers();// 通知所有观察者 java内置的观察者模式的方法
}


public void setMeasurement(int Id, String orderNumber) {
this.Id = Id;
this.orderNumber = orderNumber;
measurementsChanged();
}
public int getId() {
return Id;
}

public void setId(int id) {
Id = id;
}

public String getOrderNumber() {
return orderNumber;
}

public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
}


2、观察者

public class LogPurchase implements Observer {
private String orderNumber;
/** 内部属性 */
Observable observable;

/** 登记为观察者 */
public LogPurchase(Observable observable) {
this.observable = observable;
observable.addObserver(this);
}


/** 确定观察对象是PurchaseDate 然后调用自己的方法 */
@Override
public void update(Observable o, Object arg) {
if (o instanceof PurchaseDate) {
PurchaseDate p = (PurchaseDate) o;
this.orderNumber = p.getOrderNumber();
display();
}
}

public void display() {
System.out.println("观察者接受到的:" + orderNumber);
}

public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
}


3、测试

public class Purchase {

public static void main(String[] args) {
PurchaseDate p=new PurchaseDate();
LogPurchase log=new LogPurchase(p);
        p.setMeasurement(1,"我是观察对象");
System.out.println("-------");
}

}

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部