package cn.project.demo;
import java.util.Observable;
import java.util.Observer;
/*
* 观察者模式
* */
class Bank extends Observable{//被观察者
//保存改变并通知观察者
public void getPrice(double price){
super.setChanged();
super.notifyObservers(price);
}
}
class Guest implements Observer{//观察者
private double price;
public Guest(double price) {
this.price=price;
}
@Override
public void update(Observable obser, Object content) {
if(obser instanceof Bank){//instanceof 用来测试一个对象是否为一个类的实例
if(content instanceof Double){
if((double)content<this.price){
System.out.println("您的银行卡取走金额:"+content);
}else{
System.out.println("您的银行卡余额不足,余额剩余:"+this.price);
}
}
}
}
}
public class ObservePattern {
public static void main(String[] args) {
Guest customerA=new Guest(5000);//客户卡余额5000
Bank bank=new Bank();
bank.addObserver(customerA);//添加观察对象
bank.getPrice(4000);//向银行取款4000
bank.getPrice(6000);//向银行取款6000
}
}