设计模式--observer(316)
来源:互联网 发布:effective java 第3版 编辑:程序博客网 时间:2024/05/18 02:56
模式原型:
实例:
public interface Observer { public abstract void update(NumberGenerator numberGenerator);}
public abstract class NumberGenerator { private ArrayList observers = new ArrayList(); public void addObserver(Observer observer) { observers.add(observer); } public void deleteObserver(Observer observer) { observers.remove(observer); } public void notifyObservers() { Iterator iterator = observers.iterator(); while (iterator.hasNext()) { Observer ob = (Observer) iterator.next(); ob.update(this); } } public abstract int getNumber();//获取数值 public abstract void execute(); //生成数值}
public class RandomNumberGenerator extends NumberGenerator{ private Random random = new Random(); private int number; @Override public int getNumber() { return number; } @Override public void execute() { for(int i = 0;i < 10; i++){ number = random.nextInt(60); notifyObservers(); } }}
public class GraphObserver implements Observer { @Override public void update(NumberGenerator numberGenerator) { System.out.println("GraphObserver"); for (int i = 0; i < numberGenerator.getNumber(); i++) { System.out.print("*"); } System.out.println(); try { Thread.sleep(100); } catch (Exception e) { } }}
public class DigitObserver implements Observer { @Override public void update(NumberGenerator numberGenerator) { System.out.println("DigitObserver:" + numberGenerator.getNumber()); try { Thread.sleep(100); } catch (Exception e) { } }}
public class Main { public static void main(String[] args) { NumberGenerator generator = new RandomNumberGenerator(); generator.addObserver(new DigitObserver()); generator.addObserver(new GraphObserver()); generator.execute(); }}
结果:
DigitObserver:22
GraphObserver
**********************
DigitObserver:47
GraphObserver
***********************************************
DigitObserver:12
GraphObserver
************
DigitObserver:44
GraphObserver
********************************************
DigitObserver:48
GraphObserver
************************************************
DigitObserver:3
GraphObserver
***
DigitObserver:45
GraphObserver
*********************************************
DigitObserver:0
阅读全文
0 0
- 设计模式--observer(316)
- Observer 设计模式(转)
- 设计模式--观察者(Observer)
- Observer设计模式(C++)
- 设计模式-观察者(Observer)
- 观察者设计模式(Observer)
- Observer(观察者)设计模式
- 设计模式(四)observer
- 设计模式之Observer(观察者模式)
- 设计模式之Observer(观察者模式)
- 设计模式笔记(一) Observer模式
- 设计模式 (十五)观察者模式(Observer)
- 设计模式 (十五)观察者模式(Observer)
- 【设计模式】之观察者模式(Observer)
- 设计模式之--观察者模式(Observer)
- 设计模式(二)Observer - 观察者模式
- 设计模式之观察者(Observer)模式
- 设计模式之观察者(observer)模式
- UbuntuC语言dos 攻击
- git代码提交
- MYSQL删除表的记录后如何使ID从1开始
- java中substring与substr的用法
- Vue-cli proxyTable 解决开发环境的跨域问题
- 设计模式--observer(316)
- 微信授权登录
- NoSuchMethodException解决
- python操作mysql数据库
- WPF 学习
- 常见面试题整理—50个最常用的Unix/Linux命令
- 【预习笔记】读几个Java集合类源代码—LinkedList
- 大端模式小端模式
- java中的栈内存和堆内存(笔记)