📄 observer1.java
字号:
//产品类,如果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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -