您当前的位置: 首页 > 

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【设计模式】【19】发布订阅模式

命运之手 发布时间:2022-04-28 18:27:06 ,浏览量:1

发布订阅模式

发布订阅模式,英文名Publish Subscribe Pattern

该模式通过一个中间调度者,将发布者发布的动态,转发给订阅者

它和观察者模式在功能上非常相似,不同的地方在于

观察者模式是由Observable直接通知Observer

而发布订阅模式则有一个扮演调度中心角色的中介者,专门负责转发事件通知

在这里插入图片描述 实现代码


	public class EventBus {
	
	    Map subscriberMap;
	
	    //订阅事件
	    public void subscribe(Subscriber subscriber, String eventType) {
	        List subscribers = subscriberMap.get(eventType);
	        subscribers.add(subscriber);
	    }
	
	    //发布事件
	    public void publish(String eventType, Object event) {
	        List subscribers = subscriberMap.get(eventType);
	        for (Subscriber subscriber : subscribers)
	            subscriber.onEvent(eventType, event);
	    }
	}



	public class Subscriber {
	
	    public void onEvent(String eventType, Object event) {
	        if (eventType.equals("onTimeChange"))
	            System.out.println("Current Time " + event);
	    }
	}


	public class Publisher {
	
	    Long time;
	
	    public void updateTime() {
	        time = System.currentTimeMillis();
	    }
	}


	public class APP {
	
	    public static void main(String... args) {
	        EventBus eventBus = new EventBus();
	        Subscriber subscriber = new Subscriber();
	        Publisher publisher = new Publisher();
	        //订阅动态
	        eventBus.subscribe(subscriber, "onTimeChange");
	        //更新动态
	        publisher.updateTime();
	        //发布动态
	        eventBus.publish("onTimeChange", publisher.time);
	    }
	}

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0375s