Java中常见的设计模式之观察者模式
来源:互联网 发布:周立波与郭德纲 知乎 编辑:程序博客网 时间:2024/05/16 05:30
观察者模式
有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题。这个主题在状态发生变化时,会通知所有观察者,使它们能够自动更新自己。
在java中提供了Observable和Observer两个接口,使用他们就可以完成观察者模式。
需要被观察的类必须继承Observable类。该类中常用的方法有addObserver,deleteObserver,setChanged(),notifyObservers(Object org);
每一个观察者必须实现Observer接口,并覆写接口中的唯一的方法update(Observable o,Object obj)。
java代码例子如下:
import java.util.Observable;import java.util.Observer;class House extends Observable{private float price;public House(float price){this.price = price;}public void setPrice(float price){super.setChanged();super.notifyObservers(price);this.price = price;}public float getPrice(){return this.price;}public String toString(){return "The price of House :" + this.getPrice();}}class HousePriceObserver implements Observer{private String name;public HousePriceObserver(String name){this.name = name;}public void update(Observable ob,Object obj){if(obj instanceof Float){System.out.print(this.name);System.out.println(((Float)obj).floatValue());}}}public class ObserDemo{public static void main(String[]args){House h = new House(10000);HousePriceObserver h1 = new HousePriceObserver("lixiaoyan");HousePriceObserver h2 = new HousePriceObserver("jizenghui");HousePriceObserver h3 = new HousePriceObserver("weilin");h.addObserver(h1);h.addObserver(h2);h.addObserver(h3);System.out.println(h);h.setPrice(12000.00f);System.out.println(h);}}
0 0
- Java中常见的设计模式之观察者模式
- Java中常见的设计模式之工厂设计模式
- Java中常见的设计模式之代理设计模式
- 阅读笔记常见的设计模式之二:观察者模式
- PHP常见的设计模式之:观察者模式
- Java中常见的设计模式之适配器模式
- java设计模式之“观察者设计模式”
- Java设计模式之观察者设计模式
- 《java设计模式》之观察者设计模式
- Java设计模式之观察者
- Java设计模式之观察者
- Java设计模式之Observer(观察者)模式
- Java设计模式之Observer 观察者模式
- Java设计模式之Observer-观察者模式
- java 设计模式之二-观察者模式
- Java设计模式之观察者模式
- java设计模式之观察者模式
- java设计模式之观察者模式Observer
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 朴素匹配与KMP算法对比
- (小知识点)activity跳转到另一个activity出现黑屏
- (24)java发送http的get、post请求
- 欢迎使用CSDN-markdown编辑器
- Java中常见的设计模式之观察者模式
- iOS程序完成后如何生成ipa进行真机测试,签名
- 声明式与命令式编程
- C++中memset函数
- Android利用反射获取WLAN热点信息
- 导航器覆盖视图一部分的解决方法
- linux grep命令详解
- 如何有效地记录 Java SQL 日志?
- LeetCode:Expression Add Operators