设计模式之观察者模式
本文最后更新于369 天前,其中的信息可能已经过时,如有错误请发送邮件到2192492965@qq.com

观察者模式

观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这种模式在很多场景中都非常有用,比如事件监听、状态更新等。

观察者模式基本概念

观察者模式包含两个主要角色:

  1. Subject(主题):维护一组观察者,提供添加、删除和通知观察者的接口。
  2. Observer(观察者):为所有具体的观察者定义一个接口,在得到主题的通知时更新自己。

Java实现观察者模式

步骤 1: 定义Observer接口

在Java中,我们可以使用java.util.Observer接口来定义观察者,但为了更灵活地使用Lambda表达式,我们可以自定义一个接口。

@FunctionalInterface
public interface Observer {
    void update(String message);
}

步骤 2: 定义Subject类

Subject类将维护观察者列表,并提供注册和注销观察者的方法,以及通知所有观察者的方法。

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

public class 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(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

步骤 3: 使用Lambda表达式实现Observer

现在我们可以利用Lambda表达式来实现具体的观察者。

public class ConcreteObserver implements Observer {
    @Override
    public void update(String message) {
        System.out.println("Received message: " + message);
    }
}

或者直接使用Lambda表达式:

Observer observer = message -> System.out.println("Received message: " + message);

步骤 4: 测试观察者模式

最后,我们可以创建一个测试类来演示观察者模式的工作原理。

public class ObserverPatternTest {
    public static void main(String[] args) {
        Subject subject = new Subject();
        Observer observer1 = message -> System.out.println("Observer 1: " + message);
        Observer observer2 = message -> System.out.println("Observer 2: " + message);

        subject.attach(observer1);
        subject.attach(observer2);

        subject.notifyObservers("Hello, Observers!");
    }
}

输出结果

Observer 1: Hello, Observers!
Observer 2: Hello, Observers!

总结

通过上述步骤,我们可以看到如何利用Java 8的特性来实现观察者模式,从而在实际项目中更好地管理和维护对象之间的依赖关系。

如果觉得本文对您有所帮助,可以支持下博主,一分也是缘?
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
换装