从观察者模式联想到Java世界的消息传递机制、Akka与Vert.x的消息传递机制

前言:今天还是有些意外收获的,本来只是在学习观察者模式,想着被观察者的变化是如何通知给观察者的。在自然世界,两个个体之间传递消息,是无需强绑定的,中间总有媒介,比如:面对面交流通过空气传播声音,远程交流通过电话或网络传播信息。而Java世界不同,需要强绑定。那是不是Java世界所有的消息传递都一定要强绑定呢?未必!

首先,我们先来说一说【观察者模式】。设计模式按照解决问题分为三类:创建型(Creational)设计模式、结构型(Structural)设计模式和行为(Behavioral)设计模式,观察者模式(Observer Pattern)属于行为设计模式。

观察者模式需要两个基本抽象对象:被观察者Subject和观察者Observer,被观察者一旦有变化,观察者立马能收到消息(由被观察者发送消息通知)。

之所以为抽象对象,因为我们并不知道被观察者具体为何物,有可能是一个交通灯,有可能是平安银行的股价,也有可能是特快T1的到站情况。观察者亦然,有可能是一个AI摄像头,有可能是具体的某个人,也有可能是接站员。因此在【观察者模式】的类图如下,包括:被观察者和观察者两个接口,被观察者和观察者两个具体实现类,被观察者实现类对象持有多个观察者实现类的对象(这里非常重要,体现了Java世界中的消息传递方式,必须持有被被通知人的对象引用)。

观察者模式的具体实现代码如下:

# 被观察者接口
public interface Subject {
    void add(Observer observer);
    void remove(Observer observer);
    void notify(String message);
}

# 观察者接口
public interface Observer {
    void update(String message);
}

# 被观察者【交通灯】对象
public class LightSubject implements Subject{
    // 此处持有多个观察者对象的引用
    private List<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧十一郎君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值