首页 > 代码库 > 设计模式之观察者模式Observer
设计模式之观察者模式Observer
Java中的API还提供现成的Observer接口java.util.Observer
和类java.util.Observable------------大家可以看一下api和源码
下面提供案例
package shejimoshi.observer; import java.util.Observable; /** * 类描述:Product 继承自Observable (被观察) * @author 王要杰 * @version 1.0.8.1 * 创建时间 2014-2-24 */ public class Product extends Observable { private float price = 50.0f; private String name = ""; public Product(String name) { this.setName(name); } public Product() { } public void setPrice(float price) { this.price = price; this.setChanged();//设定标志true this.notifyObservers(this.price);//通知观察者 } public float getPrice() { return price; } public void setName(String name) { this.name = name; } public String getName() { return name; } } ---------------------------------- package shejimoshi.observer; import java.util.Observable; import java.util.Observer; /** * 类描述:观察者实现Observer 接口中的update方法 * @author 王要杰 * @version 1.0.8.1 * 创建时间 2014-2-24 */ public class MyObserver implements Observer { public void update(Observable o, Object arg) { // TODO Auto-generated method stub Observable product = (Product) o; float price = (Float) arg; System.out.println(((Product) product).getName() + "修改价格为" + price); } } -------------------------------- package shejimoshi.observer; /** * 类描述: * @author 王要杰 * @version 1.0.8.1 * 创建时间 2014-2-24 */ public class Test { /** * 方法描述:@cursor * * @param args * @param 关键字 * @author 王要杰 * @date 创建时间 2014-2-24 * @since V1.0.8.1 */ public static void main(String[] args) { // TODO Auto-generated method stub Product p1 = new Product("Spring in Action"); Product p2 = new Product("Hibernate"); MyObserver observer = new MyObserver(); p1.addObserver(observer);//注册观察者 p2.addObserver(observer);//注册观察者 p1.setPrice(35); p2.setPrice(22); } }
-------------
输出结果
Spring in Action修改价格为35.0
Hibernate修改价格为22.0
设计模式之观察者模式Observer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。