1 package com.gh.observer; 2 import java.util.Observable; 3 /** 4 * 被观察者对象 5 * 必须继承被观察者抽象类 6 * @author ganhang 7 * 8 */ 9 public class Doll extends Observable{ 10 private int price; 11 12 public int getPrice() { 13 return price; 14 } 15 16 public void setPrice(int price) { 17 this.price = price; 18 this.setChanged(); 19 this.notifyObservers(); 20 } 21 22 }
1 package com.gh.observer; 2 3 import java.util.Observable; 4 import java.util.Observer; 5 6 /** 7 * 观察者对象 8 * 必须实现观察者的接口 9 * @author ganhang 10 * 11 */ 12 public class Person implements Observer{ 13 private String name; 14 15 public Person(String name){ 16 this.name=name; 17 } 18 public void update(Observable o, Object arg) { 19 if(o instanceof Doll){ 20 Doll doll=(Doll) o; 21 System.out.println(name+"您关注的娃娃价格已经更新为"+doll.getPrice()); 22 } 23 } 24 25 }
package com.gh.observer; /** * 观察者模式的测试 * @author ganhang */ public class test { public static void main(String[] args) { Person p=new Person("小白"); Person p1=new Person("小黑"); Doll doll=new Doll(); doll.addObserver(p);//将观察者添加到被观察者的集合中 doll.addObserver(p1); System.out.println("第一轮促销"); doll.setPrice(1999); System.out.println("第二轮促销"); doll.deleteObserver(p1); doll.setPrice(999); } }
输出
第一轮促销
小黑您关注的娃娃价格已经更新为1999
小白您关注的娃娃价格已经更新为1999
第二轮促销
小白您关注的娃娃价格已经更新为999