目 录CONTENT

文章目录

Java设计模式之观察者模式

在等晚風吹
2023-12-28 / 0 评论 / 0 点赞 / 13 阅读 / 0 字 / 正在检测是否收录...

Java设计模式之观察者模式

欢迎来到我的博客!今天,让我们一同深入研究Java设计模式中的观察者模式,这是一种用于定义对象之间一对多依赖关系的行为型设计模式。观察者模式在实际应用中广泛用于实现对象之间的松耦合、事件通知机制。本文将详细介绍观察者模式的概念、使用方法以及适用场景。

1 观察者模式是什么?

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。观察者模式实现了松耦合,使得被观察者和观察者之间的关系更加灵活。

2 使用方法

观察者模式主要包括两个核心角色:被观察者(Subject)和观察者(Observer)。

2.1 被观察者(Subject)

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

public class Subject {
    private List<Observer> observers = new ArrayList<>();
    private int state;

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
        notifyObservers();
    }

    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    private void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

2.2 观察者(Observer)

public interface Observer {
    void update();
}

2.3 具体观察者(ConcreteObserver)

public class ConcreteObserver implements Observer {
    private String name;
    private Subject subject;

    public ConcreteObserver(String name, Subject subject) {
        this.name = name;
        this.subject = subject;
        this.subject.addObserver(this);
    }

    @Override
    public void update() {
        System.out.println(name + " received update. State: " + subject.getState());
    }
}

2.4 客户端(Client)

public class Client {
    public static void main(String[] args) {
        Subject subject = new Subject();

        Observer observer1 = new ConcreteObserver("Observer 1", subject);
        Observer observer2 = new ConcreteObserver("Observer 2", subject);

        subject.setState(10);
        subject.setState(20);
    }
}

3 适用场景

观察者模式适用于以下场景:

  • 当一个对象的改变需要同时改变其他对象,并且不知道有多少对象需要改变时。
  • 当一个对象必须通知其他对象,但你不希望这些对象是紧密耦合的。
  • 当对象的改变需要广播给其他对象,而且你不知道这些对象是谁时。

4 总结

观察者模式是一种实现松耦合的有效方式,通过定义一对多的依赖关系,使得被观察者和观察者之间的关系更加灵活。希望通过本文的介绍,你对观察者模式有了更深刻的理解。如果你对其他设计模式也感兴趣,敬请继续关注我的博客,我将为你带来更多精彩的内容!感谢阅读!

0

评论区