观察者模式简单例子
2016-08-15 15:57
423 查看
观察者模式定义了一种一对多的依赖关系。
写了个简单例子。
User -- 观察者, TicketCenter -- 目标, TicketNotifyThread ---定义了一个线程用于模拟目标动态变化。
当目标发生变化,观察者都得到更新。
写了个简单例子。
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"); } }
相关文章推荐
- 观察者模式(observer行为型)c#简单例子
- SYBASE ASE 12.0 上一个横表转纵表的简单例子
- 在MFC下使用OpenGL的一个简单的例子
- python中使用状态机的简单例子---截取'/x00'之前的字符串
- WebServices简单例子
- web.config文件自定义配置节的使用方法的一个简单例子
- JBuilder下调试java程序最简单的例子
- 写一个简单的C#反射的例子(附有源码)
- 利用VC++6_0实现JNI的最简单的例子【转载】
- 一个简单的XML Schema的例子
- 软件开发中的矛盾——一个简单的例子
- 蛙蛙推荐: 用web服务传递Dataset的一个简单例子
- struts简单例子的分析(含代码注释和配置文件说明)
- [Struts]学习日记1 - 一个简单的例子
- 一个.NET发邮件的简单例子
- C++ Boost 之Python(一个简单的例子)
- 一个简单例子表示fixed functional VS/Assemble VS/HLSI VS的例子
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- 一个简单的Eclipse插件开发的例子——HelloWorld【转载】
- 写的一个简单的有关函数重载的例子