当前位置: 首页 > news >正文

计算机应用技术php网站开发天津力天装饰有限公司

计算机应用技术php网站开发,天津力天装饰有限公司,视频网站怎么做统计表,杭州手机软件开发公司文章目录 基本概念定义使用场景代码实现 延伸阅读java监听机制spring监听机制 基本概念 定义 观察者模式是一种行为型设计模式#xff0c;它定义了一种一对多的依赖关系#xff0c;当一个对象的状态发生改变时#xff0c;其所有依赖者都会收到通知并自动更新。 观察者模式… 文章目录 基本概念定义使用场景代码实现 延伸阅读java监听机制spring监听机制 基本概念 定义 观察者模式是一种行为型设计模式它定义了一种一对多的依赖关系当一个对象的状态发生改变时其所有依赖者都会收到通知并自动更新。 观察者模式Observer又称发布-订阅模式Publish-SubscribePub/Sub。它是一种通知机制让发送通知的一方被观察方和接收通知的一方观察者能彼此分离互不影响。 观察者模式包含以下几个核心角色 主题Subject也称为被观察者或可观察者它是具有状态的对象并维护着一个观察者列表。主题提供了添加、删除和通知观察者的方法。 观察者Observer观察者是接收主题通知的对象。观察者需要实现一个更新方法当收到主题的通知时调用该方法进行更新操作。 具体主题Concrete Subject具体主题是主题的具体实现类。它维护着观察者列表并在状态发生改变时通知观察者。 具体观察者Concrete Observer具体观察者是观察者的具体实现类。它实现了更新方法定义了在收到主题通知时需要执行的具体操作。 观察者模式通过将主题和观察者解耦实现了对象之间的松耦合。当主题的状态发生改变时所有依赖于它的观察者都会收到通知并进行相应的更新。 使用场景 一个对象目标对象的状态发生改变所有的依赖对象观察者对象都将得到通知进行广播通知。通过这种事件触发的机制将观察者和被观察者进行解耦。 注意事项 1、JAVA 中已经有了对观察者模式的支持类。Java中EventObject、EventListener 2、避免循环引用。 3、如果顺序执行某一观察者错误会导致系统卡壳一般采用异步方式。 代码实现 主题接口 /*** 抽象主题抽象被观察者角色*/ public interface Subject {/*** 所有抽象观察者角色的集合*/ListObserver observerList Lists.newArrayList();/*** 注册观察者* param observer*/default void addObserver(Observer observer){observerList.add(observer);}/*** 取消注册* param observer*/default void removeObserver(Observer observer){observerList.remove(observer);}/*** 通知所有观察者* param content*/default void notifyAllObserver(String content){for (Observer observer: observerList){observer.recvMsg(content);}}}观察者接口 /*** 观察者*/ public interface Observer {void recvMsg(String content); }具体被观察者 Data public class ConcreteSubject implements SubjectObserver {private String msg;/*** 发送通知*/public void sendMsg(){System.out.println(ConcreteSubject send msg: this.msg);notifyAllObserver(msg);} }具体观察者 public class ConcreteObserver implements Observer {Overridepublic void recvMsg(String content) {System.out.println(ConcreteObserver recv msg: content);} }测试 public class ObserverTest {public static void main(String[] args) {ConcreteSubject concreteSubject new ConcreteSubject();concreteSubject.setMsg(important msg);concreteSubject.addObserver(new ConcreteObserver());concreteSubject.sendMsg();} }延伸阅读 java监听机制 一、创建事件对象 public class MusicEvent extends EventObject {public static final int STATE_OPEN 1;public static final int STATE_CLOSE -1;/*** 状态*/private int state;/*** Constructs a prototypical Event.** param source the object on which the Event initially occurred* throws IllegalArgumentException if source is null*/public MusicEvent(Object source) {super(source);}public MusicEvent(Object source, int state) {super(source);this.state state;}public int getState() {return state;}public void setState(int state) {this.state state;} }二、创建监听器 public interface MusicListener extends EventListener {void play(MusicEvent musicEvent); }CloseMusicListener实现 public class CloseMusicListener implements MusicListener{Overridepublic void play(MusicEvent musicEvent) {if(musicEvent.getState() MusicEvent.STATE_CLOSE){System.out.println(CloseMusicListener play: stop dance);}} }OpenMusicListener实现 public class OpenMusicListener implements MusicListener{Overridepublic void play(MusicEvent musicEvent) {if(musicEvent.getState() MusicEvent.STATE_OPEN){System.out.println(OpenMusicListener play: let us go dancing!);}} }三、定义事件源管理监听器 public class EventSource {// 监听器列表监听器注册入此列表public ListMusicListener musicListenerList new ArrayList();// 注册监听器public void addMusicListener(MusicListener musicListener) {musicListenerList.add(musicListener);}// 取消注册public void removeMusicListener(MusicListener musicListener) {musicListenerList.remove(musicListener);}// 接收外部事件public void notifyMusicListener(MusicEvent musicEvent) {for (MusicListener musicListener : musicListenerList){musicListener.play(musicEvent);}} }四、测试 public class MusicEventTest {public static void main(String[] args) {EventSource eventSource new EventSource();eventSource.addMusicListener(new OpenMusicListener());eventSource.addMusicListener(new CloseMusicListener());eventSource.notifyMusicListener(new MusicEvent(开门事件, MusicEvent.STATE_OPEN));} }spring监听机制 一、创建事件对象继承ApplicationEvent EqualsAndHashCode(callSuper true) public class MyEvent extends ApplicationEvent {private String context;public MyEvent(Object source) {super(source);}public String getContext() {return context;}public void setContext(String context) {this.context context;} }二、定义监听器实现ApplicationListener MyApplication1 public class MyApplication1 implements ApplicationListenerMyEvent {Overridepublic void onApplicationEvent(MyEvent myEvent) {System.out.println(MyApplication1 event: myEvent.getContext());} }MyApplication2 public class MyApplication2 implements ApplicationListenerMyEvent {Overridepublic void onApplicationEvent(MyEvent myEvent) {System.out.println(MyApplication2 event: myEvent.getContext());} }三、事件通知 Service public class MyListenerService {Autowiredprivate ApplicationEventPublisher applicationEventPublisher;public void register(MyEvent event){applicationEventPublisher.publishEvent(event);} }
http://www.dnsts.com.cn/news/197470.html

相关文章:

  • 专业低价建设微网站微商城怎么样河南洛阳网站建设
  • 重庆科技网站建设微信公众号商城搭建
  • 做网站 360seo关键词布局
  • 源码制作网站佛山哪个做网站的好
  • 诸城盟族网站建设苏州建设网站哪家好
  • 咸宁公司网站建设微网站管理平台
  • 大气的房产网站电子商务网站建设重要性
  • 上海宽带网网站哈尔滨网站建设优化
  • 沙坪坝做网站制作网站一般是多大
  • 做印刷的网站wordpress+微信悬浮
  • 曲靖做网站的公司企业域名怎么查找
  • 网站建设补充协议中英文网站英文
  • 文化书院网站建设方案但网页打不开
  • 长沙哪里可以做网站在线发外链工具
  • 做视频网站设备需求企业做一个app多少钱
  • 阜阳网站开发公司做一个15页的网站怎么做
  • 网站转app生成器贵阳优化网站建设
  • 做静态网站步骤网络营销方式案例
  • 哪里网站建设专业建站公司兴田德润实惠
  • 网页网站建设的步骤流程温州做网站哪家公司最好
  • 青岛品牌网站建设价格勒索做钓鱼网站的人
  • 赤壁专业建站公司中国域名网站排名
  • 重庆永川网站建设公司浏览器怎么做能不拦截网站
  • 企业做网站优势计算机网站建设名称
  • 手机微信网站怎么做的好电脑上如何卸载wordpress
  • 网站的线下推广怎么做上市网络公司排名
  • 在哪个网站可以查做项目中标的中国建筑官网测评
  • php中英双语农业公司网站源码中国网站模板免费下载
  • 小企业网站建设的基础知识如何推广短视频
  • 网站建设与网页设计视频企业培训