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

旅游网站组织结构图怎么做wordpress 密码保护

旅游网站组织结构图怎么做,wordpress 密码保护,做景观要用的植物网站,整合营销沟通观察者模式是行为设计模式之一 。 当您对对象的状态感兴趣并希望在发生任何更改时得到通知时#xff0c;观察者设计模式很有用。 在观察者模式中#xff0c;监视另一个对象状态的对象称为Observer #xff0c;而正在监视的对象称为Subject 。 根据GoF#xff0c;观察者模式… 观察者模式是行为设计模式之一 。 当您对对象的状态感兴趣并希望在发生任何更改时得到通知时观察者设计模式很有用。 在观察者模式中监视另一个对象状态的对象称为Observer 而正在监视的对象称为Subject 。 根据GoF观察者模式意图是 在对象之间定义一对多依赖关系以便当一个对象更改状态时将自动通知和更新其所有依赖关系。 主题包含观察者列表以通知其状态的任何变化因此它应提供观察者可以自己注册和注销的方法。 主题还包含一种将所有更改通知所有观察者的方法它既可以在通知观察者的同时发送更新也可以提供另一种获取更新的方法。 观察者应该有一个方法来设置要监视的对象另一种方法将由Subject用来通知他们任何更新。 Java提供了一个内置平台用于通过java.util.Observable类和java.util.Observer接口实现Observer模式。 但是由于它的实现非常简单因此并未得到广泛使用并且大多数时候我们不想只为了实现Observer模式而扩展一个类因为Java在类中不提供多重继承。 Java消息服务JMS使用Observer模式和Mediator模式来允许应用程序将数据订阅和发布到其他应用程序。 模型-视图-控制器MVC框架还使用观察者模式其中模型是主题视图是观察者可以注册以获取有关模型的任何更改的通知。 观察者模式示例 对于我们的示例我们将实现一个简单的主题观察者可以注册该主题。 每当将任何新消息发布到该主题时所有注册观察者都会收到通知他们可以使用该消息。 根据主题的要求这里是基本主题接口用于定义任何具体主题要实施的合同方法。 package com.journaldev.design.observer;public interface Subject {//methods to register and unregister observerspublic void register(Observer obj);public void unregister(Observer obj);//method to notify observers of changepublic void notifyObservers();//method to get updates from subjectpublic Object getUpdate(Observer obj);} 接下来我们将为观察者创建合同将有一种方法将Subject附加到观察者另一种方法供Subject用来通知任何更改。 package com.journaldev.design.observer;public interface Observer {//method to update the observer, used by subjectpublic void update();//attach with subject to observepublic void setSubject(Subject sub); } 现在我们的合同已经准备好了让我们继续具体执行该主题。 package com.journaldev.design.observer;import java.util.ArrayList; import java.util.List;public class MyTopic implements Subject {private ListObserver observers;private String message;private boolean changed;private final Object MUTEX new Object();public MyTopic(){this.observersnew ArrayList();}Overridepublic void register(Observer obj) {if(obj null) throw new NullPointerException(Null Observer);if(!observers.contains(obj)) observers.add(obj);}Overridepublic void unregister(Observer obj) {observers.remove(obj);}Overridepublic void notifyObservers() {ListObserver observersLocal null;//synchronization is used to make sure any observer registered after message is received is not notifiedsynchronized (MUTEX) {if (!changed)return;observersLocal new ArrayList(this.observers);this.changedfalse;}for (Observer obj : observersLocal) {obj.update();}}Overridepublic Object getUpdate(Observer obj) {return this.message;}//method to post message to the topicpublic void postMessage(String msg){System.out.println(Message Posted to Topic:msg);this.messagemsg;this.changedtrue;notifyObservers();}} 注册和注销观察者的方法实现非常简单额外的方法是postMessage 客户端应用程序将使用该方法将String消息发布到主题。 请注意布尔变量用于跟踪主题状态的变化并用于通知观察者。 此变量是必需的这样如果没有更新并且有人调用notifyObservers方法它就不会向观察者发送错误的通知。 还要注意在notifyObservers方法中使用了同步 以确保仅将消息发送给在将消息发布到主题之前注册的观察者。 这是将监视该主题的Observers的实现。 package com.journaldev.design.observer;public class MyTopicSubscriber implements Observer {private String name;private Subject topic;public MyTopicSubscriber(String nm){this.namenm;}Overridepublic void update() {String msg (String) topic.getUpdate(this);if(msg null){System.out.println(name:: No new message);}elseSystem.out.println(name:: Consuming message::msg);}Overridepublic void setSubject(Subject sub) {this.topicsub;}} 请注意update方法的实现在此方法中它正在调用Subject getUpdate方法来获取要使用的消息。 我们可以通过将message作为参数传递给update方法来避免此调用。 这是使用我们的主题实现的简单测试程序。 package com.journaldev.design.observer;public class ObserverPatternTest {public static void main(String[] args) {//create subjectMyTopic topic new MyTopic();//create observersObserver obj1 new MyTopicSubscriber(Obj1);Observer obj2 new MyTopicSubscriber(Obj2);Observer obj3 new MyTopicSubscriber(Obj3);//register observers to the subjecttopic.register(obj1);topic.register(obj2);topic.register(obj3);//attach observer to subjectobj1.setSubject(topic);obj2.setSubject(topic);obj3.setSubject(topic);//check if any update is availableobj1.update();//now send message to subjecttopic.postMessage(New Message);}} 当我们运行上面的程序时我们得到以下输出。 Obj1:: No new message Message Posted to Topic:New Message Obj1:: Consuming message::New Message Obj2:: Consuming message::New Message Obj3:: Consuming message::New Message观察者模式类图 观察者模式也称为发布-订阅模式。 它的一些实现是 Swing中的java.util.EventListener javax.servlet.http.HttpSessionBindingListener javax.servlet.http.HttpSessionAttributeListener 这就是Java中Observer模式的全部内容希望您喜欢它。 通过评论和与他人分享来分享您的爱。 参考 Java的观察者设计模式- 开发人员博客上来自我们JCG合作伙伴 Pankaj Kumar的示例教程 。 翻译自: https://www.javacodegeeks.com/2013/08/observer-design-pattern-in-java-example-tutorial.html
http://www.pierceye.com/news/904333/

相关文章:

  • 架设网站是自己架设服务器还是租服务器佛山网站排名推广
  • 西安做网站哪家最便宜win系统的wordpress
  • 饲料网站源码3号台风最新消息
  • 天津 公司网站建设优化网站内容的方法
  • 网站 例能加速浏览器的加速器
  • 黄埔营销型网站建设山东诚铭建设机械有限公司网站
  • 东莞网站建设dgjcwlwordpress添加活动
  • 广州互邦物流网络优化建站关于网站开发的请示
  • 贵阳手机银行app论坛seo招聘
  • 太原建设北路小学网站铜仁市网站建设
  • 网站换服务器怎么做哪个公司做公司网站好
  • 东莞营销网站建设报价阿里云服务器部署网站
  • 品牌企业建站如何建设网站兴田德润简介呢
  • 思行做网站北京西站到大兴机场
  • 长沙网页制作模板的网站c++编程软件
  • 网站备案 人工审核安卓软件下载安装
  • 网站建设公司 专题制作怎么注册订阅号
  • 网站运营内容包含哪些深圳标本制作
  • wordpress 微信导航站南昌有哪些企业网站
  • 网站开发需要的人员南京手机网站
  • 上海网站建设知识 博客网站建设数据库的购买
  • 足彩网站开发网站建设 网站制作
  • 网站开发 定制 多少 钱小程序加盟代理前景
  • 河南网站建设官网wordpress博客主题哪个好
  • 网站建设会计帐务处理青岛发现51例阳性
  • 保定三金网络科技有限公司windows优化大师是哪个公司的
  • 华丰建设股份有限公司网站深圳影视广告在哪里好
  • 企业建设网站需要服务器吗谷德设计网官网首页入口
  • 新手学做网站步骤天津制作网站的公司电话
  • 做网站同行php网站开发平台下载