观察者模式简单例子
来源:互联网 发布:好的码字软件 编辑:程序博客网 时间:2024/05/22 10:44
观察者模式定义了一种一对多的依赖关系。
写了个简单例子。
User -- 观察者, TicketCenter -- 目标, TicketNotifyThread ---定义了一个线程用于模拟目标动态变化。
当目标发生变化,观察者都得到更新。
package com.example;import java.util.ArrayList;public class SampleJavaTest { private static int mID = 0; public static void main(String args[]){ System.out.println("Begin to check "); User user1 = new User(mID++); User user2 = new User(mID++); TicketCenter ticketCenter = new TicketCenter(); ticketCenter.addListener(user1); ticketCenter.addListener(user2); //ticketCenter.ticketNotify(); TicketNotifyThread ticketNotifyThread = new TicketNotifyThread(ticketCenter); ticketNotifyThread.run(); }}class User{ private int ID; public User(int ID){ this.ID = ID; } void update(){ System.out.println("update in User" + ID); }}class TicketCenter{ private ArrayList<User> list = new ArrayList<>(); void addListener(User user){ list.add(user); } void removeListener(User user){ list.remove(user); } void removeAllListener(){ for(User user : list){ list.remove(user); } } void ticketNotify(){ for(User user : list){ user.update(); } }}class TicketNotifyThread implements Runnable{ private TicketCenter ticketCenter; public TicketNotifyThread(TicketCenter ticketCenter){ this.ticketCenter = ticketCenter; } @Override public void run() { int notifyTimes = 10; while(notifyTimes != 0){ ticketCenter.ticketNotify(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } notifyTimes--; } ticketCenter.removeAllListener(); System.out.println("End All"); }}
0 0
- 观察者模式简单例子
- Java 观察者模式 简单例子
- 观察者模式简单例子(1)
- Notification简单观察者模式例子
- JAVA设计模式-观察者模式简单例子
- C#设计模式---观察者模式简单例子
- 很简单的的观察者模式例子
- 一个简单的观察者模式例子
- 设计模式之观察者模式 简单易懂的小例子
- 观察者模式经典例子
- C++ 观察者模式例子
- 观察者模式例子
- Java观察者模式例子
- 观察者模式例子
- 观察者模式例子
- 观察者模式 例子
- 观察者模式例子
- 观察者模式例子
- Java类集框架——List接口
- 海量数据处理问题
- 在xcode模拟器上运行3Dtouch
- java 加解密工具类
- 设计模式6大原则---1
- 观察者模式简单例子
- leetcode-java-95. Unique Binary Search Trees II
- SY1371
- UITableView隐藏多余的分割线
- 2016CCPC网预总结
- 2016.08.15【初中部 NOIP提高组 】模拟赛C题解
- jee、spring、spring mvc、mybatis 学习(六)
- Ubuntu编译Hadoop源码异常总结
- Java枚举的七种常见用法