订阅者-发布者简单demo

本文介绍了一个简单的发布订阅模式实现,通过实例演示了如何初始化发布者和订阅者,订阅者如何注册到发布者,以及发布者如何通知所有已注册的订阅者。此模式类似于关注微博的过程。
过程:
  1、初始化发布者订阅者
  2、订阅者注册到发布者
  3、发布者通知订阅者

流程跟关注微博一样。

demo:

package com.zyf.publishsubscribe.publish;

import com.zyf.publishsubscribe.subscribe.Subscriber;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zyf
 * 发布者
 */
@Data
public class Publisher {

    private String name;

    public Publisher(String name) {
        this.name = name;
    }

    //注册容器
    List<Subscriber> subscribers = new ArrayList<>();

    /**
     * 注册
     * @param subscriber
     */
    public void register(Subscriber subscriber) {
        this.subscribers.add(subscriber);
    }

    /**
     * 发布通知
     */
    public void publish(){
        for (Subscriber subscriber: subscribers) {
            System.out.println(name + " 通知给:"+subscriber.getName());
            subscriber.receive(name);
        }
    }
}
package com.zyf.publishsubscribe.subscribe;

import lombok.Data;

/**
 * @author zyf
 * 订阅者
 */
@Data
public class Subscriber {

    private String name;

    public Subscriber(String name) {
        this.name = name;
    }

    public void receive(String publisherName){
        System.out.println(name+"  收到  "+publisherName+"  的通知");
    }
}
package com.zyf.publishsubscribe;

import com.zyf.publishsubscribe.publish.Publisher;
import com.zyf.publishsubscribe.subscribe.Subscriber;

/**
 * @author zyf
 */
public class Test {

    public static void main(String[] args) {
        /**
         * 1、初始化发布者订阅者
         * 2、订阅者注册到发布者
         * 3、发布者通知订阅者
         */
        Publisher p1 = new Publisher("腾讯");
        Publisher p2 = new Publisher("新浪");

        Subscriber s1 = new Subscriber("s1");
        Subscriber s2 = new Subscriber("s2");
        Subscriber s3 = new Subscriber("s3");
        Subscriber s4 = new Subscriber("s4");
        //注册
        p1.register(s4);
        p2.register(s1);
        p2.register(s2);
        p2.register(s3);
        //发布通知
        p1.publish();
        p2.publish();
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值