observer1.java
来自「郭克华j2ee高级框架实战教学视频源代码 这个是比较值得一看的 由郭克华博士」· Java 代码 · 共 46 行
JAVA
46 行
//产品类,如果changePrice调用,一定要通知Customer
//目标:Product不用关心要通知谁,Customer也不用关心通知是谁发出
//Product:被观察者,Customer:观察者
import java.util.*;
class Product extends Observable{
private String pname;
private double price;
public void setObserver(Observer observer){//可以用Spring注入
this.addObserver(observer);
}
public Product(String pname,double price){
this.pname = pname;
this.price = price;
}
public void changePrice(double newPrice){
this.price = newPrice;
//通知观察者
this.setChanged(); //设置变化点,表示要通知观察者
this.notifyObservers("通知:价格变化了");//通知所有观察者,给一个消息
//此时就能够自动调用观察者的update方法
}
}
//顾客类
class Customer implements Observer{
private String cname;
public Customer(String cname){
this.cname = cname;
}
public void update(Observable o, Object arg){//参数1:来源于哪个对象,参数2:消息
System.out.println(arg);
}
public void printInfo(){
System.out.println(cname);
}
}
public class Observer1{
public static void main(String args[]){
Product pro = new Product("白菜",12);
Customer cus = new Customer("张三");
pro.setObserver(cus);//观察者和被观察者要绑定,一个被观察者可以设置多个观察者
pro.changePrice(13);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?