您的位置:首页 > 文旅 > 旅游 > 找个网站怎么这么难_深圳关键词排名首页_整站优化提升排名_百度发视频步骤

找个网站怎么这么难_深圳关键词排名首页_整站优化提升排名_百度发视频步骤

2025/1/11 7:59:23 来源:https://blog.csdn.net/pp1981002445/article/details/145060803  浏览:    关键词:找个网站怎么这么难_深圳关键词排名首页_整站优化提升排名_百度发视频步骤
找个网站怎么这么难_深圳关键词排名首页_整站优化提升排名_百度发视频步骤

设计模式(观察者模式)

第三章 设计模式之观察者模式

观察者模式介绍

观察者模式(Observer Design Pattern) 也被称为发布订阅模式 。模式定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有的依赖对象都会自动收到通知。一般情况下,被依赖的对象叫做被观察者(Observeable) ,依赖的对象叫作观察者(Observer)
不过,在实际的项目开发中,这两种对象的称呼是比较灵活的,有各种不同的叫法,比如Subject-Observer、Publisher-Subscriber、Producer-Consumer、EventEmitter-EventListener、Dispatcher-Listener。不管怎么称呼,只要应用场景符合刚刚给出的定义,都可以看做观察者模式。
实际上,观察者模式是一个比较抽象的模式,根据不同的应用场景和需求,有完全不同的实现方式。下面讲到的是其中最经典的一种实现方式。
在这里插入图片描述

示例程序

Subject 被观察者接口
/*** @author maomao* @date 2025/1/10* @time 16:10* 被观察者接口*/
public interface Subject {/*** 注册观察者* @param observer 观察者*/void register(Observer observer);/*** 移除观察者* @param observer 观察者*/void remove(Observer observer);/*** 通知观察者* @param message 消息*/void notifyObserver(String message);
}
Observer 观察者接口
/*** @author maomao* @date 2025/1/10* @time 16:11* 观察者接口*/
public interface Observer {/*** 观察者执行* @param message 消息*/void execute(String message);
}
NotifySubject 被观察者实现类
/*** @author maomao* @date 2025/1/10* @time 16:13*/
public class NotifySubject implements Subject {List<Observer> observers = new ArrayList<>();@Overridepublic void register(Observer observer) {observers.add(observer);}@Overridepublic void remove(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObserver(String message) {for (Observer observer : observers) {observer.execute(message);}}
}
SendMsgObserver
/*** @author maomao* @date 2025/1/10* @time 16:13*/
public class SendMsgObserver implements Observer {@Overridepublic void execute(String message) {System.out.println("发送短信,内容为:" + message);}
}
CallObserver
/*** @author maomao* @date 2025/1/10* @time 16:15*/
public class CallObserver implements Observer {@Overridepublic void execute(String message) {System.out.println("打电话,内容为:" + message);}
}
Main函数
/*** @author maomao* @date 2025/1/10* @time 16:15*/
public class Main {public static void main(String[] args) {NotifySubject notifySubject = new NotifySubject();notifySubject.register(new SendMsgObserver());notifySubject.register(new CallObserver());notifySubject.notifyObserver("今天不上班,休假一天。");}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com