大数据开发基础的设计模式的观察者

简介: 观察者模式是大数据开发基础的设计模式之一。它是一种行为型模式,用于定义对象之间的一对多依赖关系,当一个对象状态发生改变时,其所有依赖者都会收到通知并自动更新。


观察者模式通常包括两个部分:

  1. 抽象主题接口:定义了被观察者必须实现的方法,包括添加、删除和通知观察者。
  2. 具体主题类:实现了抽象主题接口,可以有多个具体主题类,每个具体主题类代表不同的被观察者。
  3. 观察者接口:定义了观察者必须实现的方法,包括接收通知并做出相应的处理。
  4. 具体观察者类:实现了观察者接口,可以有多个具体观察者类,每个具体观察者类代表不同的观察者。

下面是一个简单的示例:

import java.util.ArrayList;
import java.util.List;
interface Subject {
    void attach(Observer observer);
    void detach(Observer observer);
    void notifyObservers();
}
class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();
    public void attach(Observer observer) {
        observers.add(observer);
    }
    public void detach(Observer observer) {
        observers.remove(observer);
    }
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}
interface Observer {
    void update();
}
class ConcreteObserverA implements Observer {
    private ConcreteSubject subject;
    public ConcreteObserverA(ConcreteSubject subject) {
        this.subject = subject;
        subject.attach(this);
    }
    public void update() {
        System.out.println("ConcreteObserverA has been notified.");
    }
}
class ConcreteObserverB implements Observer {
    private ConcreteSubject subject;
    public ConcreteObserverB(ConcreteSubject subject) {
        this.subject = subject;
        subject.attach(this);
    }
    public void update() {
        System.out.println("ConcreteObserverB has been notified.");
    }
}

在上面的示例中,Subject 接口定义了被观察者必须实现的方法。ConcreteSubject 是具体主题类,通过维护一个 List 来存储观察者,并实现了 Subject 接口中的添加、删除和通知方法。Observer 接口定义了观察者必须实现的方法。ConcreteObserverA 和 ConcreteObserverB 是具体观察者类,都实现了 Observer 接口。

下面是一个使用观察者模式的示例:

public class Client {
    public static void main(String[] args) {
        ConcreteSubject subject = new ConcreteSubject();
        ConcreteObserverA observerA = new ConcreteObserverA(subject);
        ConcreteObserverB observerB = new ConcreteObserverB(subject);
        subject.notifyObservers();
    }
}

在上面的示例中,我们使用 ConcreteSubject 具体主题类来作为被观察者,并创建了两个具体观察者类 ConcreteObserverA 和 ConcreteObserverB。通过调用 ConcreteSubject 的 notifyObservers() 方法,可以通知所有观察者对象。

使用观察者模式可以带来一些好处:

  1. 降低耦合度:被观察者和观察者之间的依赖关系变得松散了,它们可以独立地进行改变。
  2. 可维护性提高:当系统需要更改时,只需要增加或删除具体观察者类即可,不需要修改原有代码。
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
4月前
|
设计模式 算法 调度
行为型设计模式:模板设计模式/观察者设计模式/策略设计模式/责任链设计模式
行为型设计模式:模板设计模式/观察者设计模式/策略设计模式/责任链设计模式
33 0
|
4月前
|
设计模式
设计模式-观察者(发布订阅)模式
设计模式-观察者(发布订阅)模式
|
12月前
|
设计模式 分布式计算 大数据
大数据开发基础的设计模式的责任链
当涉及大数据的开发时,设计模式是至关重要的。其中一种常见的设计模式是责任链模式,它可以有效地处理多个对象之间的请求。
65 0
|
12月前
|
设计模式 大数据
大数据开发基础的设计模式的适配器
适配器模式是大数据开发基础的设计模式之一。它是一种结构型模式,用于将一个类的接口转换成客户端所期望的另一个接口。适配器让原本由于接口不兼容而不能一起工作的类可以合作无间。
63 0
|
12月前
|
设计模式 算法 大数据
大数据开发基础的设计模式的模板方法
模板方法是大数据开发基础的设计模式之一。它是一种行为型模式,用于定义算法执行的步骤和顺序,将算法的具体实现延迟到子类中。这样客户端代码就可以在不改变原始类代码的情况下,选择不同的算法。
66 0
|
12月前
|
设计模式 存储 大数据
大数据开发基础的设计模式的单例
当谈到大数据开发基础的设计模式时,单例是一种非常重要的设计模式。单例模式确保一个类只有一个实例,并且该实例可以全局访问。这个模式通常用于管理资源,例如数据库连接池或线程池。
59 0
|
12月前
|
设计模式 大数据
大数据开发基础的设计模式的工厂
工厂模式是大数据开发基础的设计模式之一。它是一种创建型模式,用于根据不同的条件创建不同类型的对象。在工厂模式中,我们不需要直接使用 new 关键字来创建一个对象,而是通过一个专门的工厂类来创建对象。这样可以使代码更加灵活和易于维护。
68 0
|
12月前
|
设计模式 大数据
大数据开发基础的设计模式的代理
代理模式是大数据开发基础的设计模式之一。它是一种结构型模式,用于为其他对象提供一种代理以控制对这个对象的访问。代理模式可以在不改变原始类代码的情况下,对原始类进行扩展或增强。
60 0
|
12月前
|
设计模式 算法 大数据
大数据开发基础的设计模式的策略
策略模式是大数据开发基础的设计模式之一。它是一种行为型模式,用于定义一系列算法,并将每个算法封装起来,使其可以相互替换。这样客户端代码就可以在不改变原始类代码的情况下,选择不同的算法。
77 0
|
设计模式 前端开发
前端通用编程基础的设计模式之观察者
观察者模式是前端开发中非常常见且实用的一种设计模式。该模式可以帮助我们更好地设计和实现一些复杂的应用程序,例如事件处理、数据绑定以及状态管理等。
93 0