教你写响应式框架(一)

本文介绍了观察者模式,作为响应式框架的基础。解释了观察者模式的概念,包括抽象主题、具体主题、抽象观察者和具体观察者四个角色,并通过代码示例展示了其实现。接着讨论了推模型和拉模型,指出拉模型在应对观察者需求变化时的优势。最后,强调了观察者模式适用于多个对象依赖一个对象变化的场景,并以上课为例进行说明,预告下篇将介绍如何编写响应式框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在真正开始编写自己的响应式框架之前,我们先来从观察者模式说起。已经对观察者模式很熟悉的可以直接掠过。

基本概念

观察者模式属于对象行为模式之一,也可叫做发布——订阅模式。它定义了一种以对多的依赖关系,让多个观察者(订阅者)同时观察(监听)一个被观察者(主题),当被观察者的状态发生变化时,会通知所有的观察者对象。

在我们了解什么是观察者模式之后,我们来看一下观察者模式的结构:
这里写图片描述

通过上图我们可以看出观察者涉及到了四种角色:

  • 抽象主题角色(Subject):抽象主题角色保存了所有注册的观察者的引用,同时提供了对观察者的管理,抽象主题角色也叫做被观察者(Observable)
  • 具体主题角色(ConcreteSubject):在具体主题内部状态发生变化时,给所有注册过的观察这发出通知.
  • 抽象观察者角色(Observer):为所有的具体观察者定义的约束接口,在得到主题通知时更新自己.
  • 具体观察者角色(ConcreteObserver):具体观察者实现抽象观察者角色,以便接受主题改变的状态.

代码实现

现在我们来看一下代码的实现

抽象主题角色:

public abstract class Subject {
    private List<Observer> list = new ArrayList<>();

    //将observer注册到Subject
    public void attach(Observer observer) {
        list.add(observer);
    }
    //移除某个observer
    public void detach(Observer observer) {
        list.remove(observer);
    }
    //通知所有observer
    public voi
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值