博客
关于我
学习设计模式——观察者模式
阅读量:796 次
发布时间:2023-03-24

本文共 1559 字,大约阅读时间需要 5 分钟。

观察者模式详解

1. 观察者模式的定义

观察者模式是一种设计模式,定义了对象之间的一对多依赖关系。当一个对象的状态发生变化时,所有依赖该对象的其他对象都会得到通知,并根据需要进行相应的变化。

2. 观察者模式的组织结构

观察者模式的核心组成部分包括以下几个角色:

  • Subject(目标对象):被观察的对象,其状态变化会触发通知事件。Subject必须提供注册和移除观察者的接口,并能通知所有注册的观察者。

  • Observer(观察者):接收通知的对象,通常通过实现一个update方法来处理目标状态的变化。

  • SubjectImpl:Subject的具体实现类,负责维护观察者列表并通知它们。

  • ObserverImpl:观察者的具体实现类,负责接收目标对象的通知并执行相应的业务逻辑。

3. 观察者模式的实现示例

以下是一个基于Java的观察者模式实现示例:

// 观察者接口
public interface Observer {
void update(Subject s);
}
// 观察者具体实现类
public class ObserverImpl implements Observer {
private String state;
@Override
public void update(Subject s) {
// 根据目标对象的状态更新自身状态
state = ((SubjectImpl) s).getState();
}
}
// 被观察的目标对象
public class Subject {
private List
observers = new ArrayList<>();
// 注册观察者
public void regist(Observer ob) {
observers.add(ob);
}
// 移除观察者
public void remove(Observer ob) {
observers.remove(ob);
}
// 通知所有观察者状态改变
public void notifyObserver() {
for (Observer ob : observers) {
ob.update(this);
}
}
}
// 目标对象的具体实现类
public class SubjectImpl extends Subject {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
// 状态更新,通知观察者
notifyObserver();
}
}

4. 观察者模式的实现要点

  • 目标与观察者之间建立一对多关系,但观察者可以同时观察多个目标。

  • 观察者可以通过不同的update方法处理不同目标对象的状态变化。

  • Java中提供了Observable类作为目标对象的实现,Observer接口定义了观察者需要实现的方法。

  • 5. 实现意义

    观察者模式的核心优势在于它能够将目标对象和其依赖的观察者分离,使得目标对象的状态变化能够自动通知所有关注的观察者,从而实现松耦合的设计,提升系统的可扩展性和可维护性。

    转载地址:http://brqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现reverse letters反向字母算法(附完整源码)
    查看>>
    Objective-C实现ripple adder涟波加法器算法(附完整源码)
    查看>>
    Objective-C实现RodCutting棒材切割最大利润算法(附完整源码)
    查看>>
    Objective-C实现Romberg算法(附完整源码)
    查看>>
    Objective-C实现RRT路径搜索(附完整源码)
    查看>>
    Objective-C实现rsa 密钥生成器算法(附完整源码)
    查看>>
    Objective-C实现RSA密码算法(附完整源码)
    查看>>
    Objective-C实现runge kutta龙格-库塔法算法(附完整源码)
    查看>>
    Objective-C实现segment tree段树算法(附完整源码)
    查看>>
    Objective-C实现selection sort选择排序算法(附完整源码)
    查看>>
    Objective-C实现sha256算法(附完整源码)
    查看>>
    Objective-C实现shell sort希尔排序算法(附完整源码)
    查看>>
    Objective-C实现SinglyLinkedList单链表算法(附完整源码)
    查看>>
    Objective-C实现skew heap倾斜堆算法(附完整源码)
    查看>>
    Objective-C实现Skip List跳表算法(附完整源码)
    查看>>
    Objective-C实现slack message松弛消息算法(附完整源码)
    查看>>
    Objective-C实现slow sort慢排序算法(附完整源码)
    查看>>
    Objective-C实现tanh函数功能(附完整源码)
    查看>>
    Objective-C实现z-algorithm算法(附完整源码)
    查看>>
    Objective-C实现zellers congruence泽勒一致算法(附完整源码)
    查看>>