观察者模式
观察者模式概念:
顾名思义,该模式分为两种角色,观察者和被观察者(主题),当主题状态发生改变,就把状态信息发送给每个观察者;实现过程大概为:观察者都实现同一个观察者接口,重写里面的消息通知方法(用于主题更新的方法);主题也实现一个接口,接口里面涉及对观察者列表的删除更新操作;
一对多的关系,这种场景可以用在传感器检测方面,传感器当作一个主题对象,传感器状态一发生变化,立即更新给他的观察者
具体使用方法:
public interface MyObserver{
public void notify(String msg);
}
//观察者
public class Observer1 implements MyObserver{
@Override
public void notify(String msg) {
// TODO Auto-generated method stub
}
}
public class Observer2 implements MyObserver{
@Override
public void notify(String msg) {
// TODO Auto-generated method stub
}
}
//主题接口 被观察者
public interface Topic{
public void addObserver(MyObserver observer);
public void delObserver(MyObserver observer);
public void notifyAllObserver();
}
public class MyTopic implements Topic{
private LinkedList<MyObserver> observerList = new LinkedList<MyObserver>();
private String state = "normal";
@Override
public void addObserver(MyObserver observer) {
// TODO Auto-generated method stub
observerList.add(observer);
}
@Override
public void delObserver(MyObserver observer) {
// TODO Auto-generated method stub
observerList.remove(observer);
}
@Override
public void notifyAllObserver() {
// TODO Auto-generated method stub
for(MyObserver observer : observerList){
observer.notify(state);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】