java手写一个消息通知功能

在Java中实现一个简单的消息通知功能,我们可以使用观察者模式。下面是一个基本的实现,其中包含了一个Subject接口和Observer接口,以及具体的实现类。

这个例子中,我们将创建一个简单的发布/订阅系统,其中Subject负责维护订阅者列表,并在有新消息时通知所有订阅者。

首先,定义Observer接口:

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

然后,定义Subject接口:

java
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}

接下来,实现具体的Subject类:

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

public class MessageSubject implements Subject {
private final List observers = new ArrayList<>();

@Override
public void registerObserver(Observer observer) {
    observers.add(observer);
}

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

@Override
public void notifyObservers(String message) {
    for (Observer observer : observers) {
        observer.update(message);
    }
}

}

然后,创建一个具体的Observer类:

java
public class MessageObserver implements Observer {
private final String name;

public MessageObserver(String name) {
    this.name = name;
}

@Override
public void update(String message) {
    System.out.println(name + " received message: " + message);
}

}

最后,我们来测试这个消息通知系统:

java
public class MessageNotificationDemo {
public static void main(String[] args) {
// 创建主题
Subject subject = new MessageSubject();

    // 创建观察者
    Observer observer1 = new MessageObserver("Observer 1");
    Observer observer2 = new MessageObserver("Observer 2");

    // 注册观察者
    subject.registerObserver(observer1);
    subject.registerObserver(observer2);

    // 发送消息
    subject.notifyObservers("Hello, this is a notification message!");

    // 移除观察者
    subject.removeObserver(observer1);

    // 再次发送消息
    subject.notifyObservers("Another notification message!");
}

}

在这个例子中,我们创建了两个观察者,并将它们注册到主题上。当我们调用notifyObservers方法时,所有注册的观察者都会收到消息并执行update方法。之后,我们移除了一个观察者,再次发送消息时,只有剩下的观察者会收到通知。

这个简单的消息通知系统展示了观察者模式的基本用法,但实际应用中可能需要更复杂的功能,比如异步通知、消息持久化等。在实际的生产环境中,你可能需要使用像Redis这样的外部消息队列系统来实现更健壮的消息通知功能。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值