观察者模式简单例子

    xiaoxiao2025-11-02  7

    观察者模式定义了一种一对多的依赖关系。

    写了个简单例子。

    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"); } }

     

     

    转载请注明原文地址: https://ju.6miu.com/read-1303772.html
    最新回复(0)