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

58企业网站如何做旅游景点网站模板大全

58企业网站如何做,旅游景点网站模板大全,WordPress搜索功能增强,wordpress 调用百度地图Java监听器与观察者模式 Java中的监听器#xff08;Listener#xff09;和观察者模式#xff08;Observer Pattern#xff09;都是用于处理对象间的事件通知和响应的设计模式。它们的目的是在对象之间建立一种松散的耦合#xff0c;使得一个对象的状态变化可以通知到其他…Java监听器与观察者模式 Java中的监听器Listener和观察者模式Observer Pattern都是用于处理对象间的事件通知和响应的设计模式。它们的目的是在对象之间建立一种松散的耦合使得一个对象的状态变化可以通知到其他对象并且其他对象能够相应地作出变化。 首先我们先用两个实例来感受一下 观察者模式 观察者模式是一种行为设计模式它定义了一种一对多的依赖关系当一个对象的状态发生变化时所有依赖于它的对象都得到通知并被自动更新。 在Java中观察者模式通常使用java.util.Observable类和java.util.Observer接口来实现。被观察的对象继承Observable类而观察者实现Observer接口。当被观察对象的状态发生改变时它会调用notifyObservers()方法通知所有注册的观察者。 import java.util.Observable; import java.util.Observer; // 被观察的对象 class MyObservable extends Observable {private int data;public int getData() {return data;}public void setData(int data) {this.data data;setChanged(); // 表示状态已改变notifyObservers(data); // 通知观察者} }// 观察者 class MyObserver implements Observer {Overridepublic void update(Observable o, Object arg) {if (o instanceof MyObservable) {System.out.println(Data changed to: arg);}} }public class ObserverPatternExample {public static void main(String[] args) {MyObservable observable new MyObservable();MyObserver observer new MyObserver();observable.addObserver(observer);observable.setData(42); // 触发通知} } 这个代码比较简单在被观察对象 MyObservable发生改变时会通知观察者监听此对象的观察者 MyObserver会同步做出处理。 其中有一步observable.addObserver(observer); 这个是将被观察对象让观察者检测到 其内部实现主要在Observable 源码如下所示 public class Observable {private boolean changed false;private VectorObserver obs new Vector(); //观察者列表public Observable() {}public synchronized void addObserver(Observer o) { //添加观察者if (o null) {throw new NullPointerException();} else {if (!this.obs.contains(o)) {this.obs.addElement(o);}}}public synchronized void deleteObserver(Observer o) { //删除观察者this.obs.removeElement(o);}public void notifyObservers() { //通知观察者this.notifyObservers((Object)null);}public void notifyObservers(Object arg) { //通知观察者带参执行Object[] arrLocal;synchronized(this) {if (!this.changed) {return;}arrLocal this.obs.toArray();this.clearChanged();}for(int i arrLocal.length - 1; i 0; --i) {((Observer)arrLocal[i]).update(this, arg);}}public synchronized void deleteObservers() { //删除所有观察者this.obs.removeAllElements();}protected synchronized void setChanged() {/当改变是可以通知观察者执行this.changed true;}protected synchronized void clearChanged() {//当改变是可以通知观察者不执行this.changed false;}public synchronized boolean hasChanged() { //获取观察者是否可以执行return this.changed;}public synchronized int countObservers() {//返回当前观察者个数return this.obs.size();} } 通过源码可以看出addObserver方法可以将观察者加入到这个被观察者的属性中通过维护一个Vector来维护所有的观察者观察者实现Observer接口的update方法来执行通知的方法。 监听器模式 监听器模式并不是一个新的设计模式它是观察者模式在特定场景下的一种改造和应用。通常观察者模式的主题在通知观察者时通知中不包含任何信息。如果这个过程中携带了一些其他信息那么主题本身就成为了事件源而携带信息的封装类就成为了事件。此时的观察者模式也就升级为监听器了。监听器模式是观察者模式的另一种形态。 监听器模式通常包含三个角色事件源、事件对象、事件监听器。 在Java中监听器模式通常通过接口和事件对象来实现。 具体实现如下 // 监听器接口 interface MyListener {void onDataChanged(int newData); } // 发布者类 class EventSource {private MyListener listener;public void setListener(MyListener listener) {this.listener listener;}public void fireEvent(int newData) {if (listener ! null) {listener.onDataChanged(newData);}} }// 订阅者类 class MySubscriber implements MyListener {Overridepublic void onDataChanged(int newData) {System.out.println(Data changed to: newData);} }public class ListenerPatternExample {public static void main(String[] args) {EventSource eventSource new EventSource();MySubscriber subscriber new MySubscriber();eventSource.setListener(subscriber);eventSource.fireEvent(42); // 触发事件} }
http://www.yutouwan.com/news/501700/

相关文章:

  • 河北企业网站设计网站策划书中应包括市场竞争对手的信息
  • 佛山网站制作哪个好薇网页制作实战视频
  • 房子如何上网站做民宿做库房推广哪个网站好
  • 用网站建设与管理创业疾控中心24小时咨询电话
  • 苏州网站制作及推广做水处理药剂的公司网站
  • 网站快速备案濮阳seo外包公司
  • 网站搜索引擎优化主要方法下载建设网站
  • 那曲地区建设局网站软件源码成品资源下载网站
  • 猎头自己在哪个网站做单网站建设英文字体
  • 首席经济学家共议资产前景 慢牛逻辑逐步形成
  • 死了么APP称承受巨大压力 创新路上的坚守与挑战
  • 贵金属“狂飙” 这些骗局要警惕 理性投资防风险
  • 趴地菠菜黄心菜 河南本土蔬菜破圈 互联网助力鲜蔬走红
  • 德国遭遇“黑冰”天气 交通严重受阻
  • 女子轻信“办户口”谎言被骗近18万 骗子已被批捕
  • 俄称“榛树”导弹打瘫乌战机修理厂 重创维修与生产设施
  • 郑州制作网站费用公司网站规划案例
  • 安阳网站建设公司出租车公司深圳网络推广公司哪家好
  • 义乌北苑编程网站开发公司html电影网页制作模板
  • 黑龙江省营商环境建设监督局网站注册公司取名技巧
  • 使用爬虫做的网站电脑做apk的网站h5
  • 怎么做有个捐款的网站深圳网站平台
  • app和网站开发语言的区别微信小程序的开发步骤流程
  • 具有价值的专业网站建设平台广州网站案例展示
  • 计算机专业网站开发开题报告青岛做网站建设价格
  • ps制作网站效果图手机网站二级域名
  • 排名好的网站关键词优化企业做最好的网站
  • 北京的做网站的公司网站建设iis配置
  • 网站问责建设书wordpress 下 刷文章
  • 互联网网站备案域名服务商平台