网站建设与推广完美结合wordpress怎么去掉主题的搜索框

web/2025/9/28 12:29:53/文章来源:
网站建设与推广完美结合,wordpress怎么去掉主题的搜索框,产品推广步骤,找生产建筑模板的厂家java 观察者模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中#xff0c;您将深入研究大量的设计模式#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 … java 观察者模式示例 本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中您将深入研究大量的设计模式并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因并了解何时以及如何应用模式中的每一个。 在这里查看 目录 1.观察者模式 2.什么是观察者模式 3.实施观察者模式 4. Java的内置观察者模式 5.何时使用观察者模式 6.下载源代码 1.观察者模式 体育大厅是运动爱好者的理想运动场所。 它们涵盖几乎所有类型的体育活动并提供最新新闻信息比赛预定日期有关特定球员或球队的信息。 现在他们计划提供实时评论或比赛分数作为SMS服务但仅针对其高级用户。 他们的目标是在短时间间隔后通过短信发送实时比分比赛情况和重要事件。 作为用户您需要订阅该程序包并且在进行实时比赛时您会收到一条有关实时评论的短信。 该站点还提供了一个随时取消订阅包的选项。 作为开发人员运动大厅要求您为他们提供此新功能。 体育大厅的记者将坐在比赛中的评论框内并将实时评论更新为评论对象。 作为开发人员您的工作是通过从评论对象如果有中获取评论来向注册用户提供评论。 进行更新时系统应通过向订阅的用户发送SMS来更新他们。 这种情况清楚地显示了比赛与用户之间的一对多映射因为可能有许多用户订阅单个比赛。 观察者设计模式最适合这种情况让我们了解一下这种模式然后为Sport Lobby创建功能。 2.什么是观察者模式 观察者模式是一种行为模式它与对象之间的职责分配有关。 行为模式表征了复杂的控制流这些流在运行时很难遵循。 它们将您的注意力从控制流上移开让您仅专注于对象的互连方式。 观察者模式定义了对象之间的一对多依赖关系因此当一个对象改变状态时其所有依赖关系都会得到通知并自动更新。 观察者模式描述了这些依赖关系。 此模式中的关键对象是主题和观察者。 主题可以具有任意数量的从属观察者。 只要对象的状态发生变化就会通知所有观察者。 作为响应每个观察者将查询主题以使其状态与主题状态同步。 了解观察者模式的另一种方法是发布者与订阅者之间的关系。 例如假设您订阅了自己喜欢的体育或时尚杂志的杂志。 每当发行新期刊时它就会交付给您。 如果您在不再需要该杂志时取消订阅则该杂志将不会发送给您。 但是出版商继续像以前一样工作因为还有其他人也订阅了该杂志。 图1 观察者模式有四个参与者 主题用于注册观察者。 对象使用此接口注册为观察者也将自己从观察者中删除。 观察者定义了一个对象的更新接口该对象应该在主题更改时得到通知。 所有观察者都需要实现Observer接口。 该接口具有update()方法当Subject的状态更改时会调用该方法。 ConcreteSubject将感兴趣的状态存储到ConcreteObserver对象。 状态更改时它将向其观察者发送通知。 具体主题始终实现Subject接口。 每当状态更改时 notifyObservers()方法用于更新所有当前观察者。 ConcreateObserver维护对ConcreteSubject对象的引用并实现Observer接口。 每个观察者都向具体主题注册以接收更新。 3.实施观察者模式 让我们看看如何在开发运动大厅功能时使用观察者模式。 有人将更新具体主题的对象而您的工作是更新在具体主题对象中注册的对象的状态。 因此只要具体主体对象的状态发生变化就应该通知其所有依赖对象然后进行更新。 图2 基于此我们首先创建一个Subject接口。 在“主题”界面中有三种主要方法可以根据需要添加其他一些方法如果需要。 package com.javacodegeeks.patterns.observerpattern;public interface Subject {public void subscribeObserver(Observer observer);public void unSubscribeObserver(Observer observer);public void notifyObservers();public String subjectDetails(); } “ Subject界面中的三个关键方法是 subscribeObserver 用于订阅观察者或者我们可以说注册观察者以便如果主题的状态发生变化则应通知所有这些观察者。 unSubscribeObserver 用于取消订阅观察者因此如果主题的状态发生变化则不应通知该未订阅的观察者。 notifyObservers 当主题状态发生变化时此方法通知注册的观察者。 并且可选地还有一个方法subjectDetails() 这是一个简单的方法并且根据您的需要。 在这里其工作是返回主题的详细信息。 现在让我们看看Observer界面。 package com.javacodegeeks.patterns.observerpattern;public interface Observer {public void update(String desc);public void subscribe();public void unSubscribe(); } 当主题状态发生变化时主题会在观察者上调用update(String desc)方法以通知该方法。 subscribe() 方法用于向主题订阅自身。 unsubscribe() 方法用于取消订阅主题。 package com.javacodegeeks.patterns.observerpattern;public interface Commentary {public void setDesc(String desc); } 报告者使用以上接口来更新评论对象的实时评论。 这是一个可选接口仅用于遵循代码与接口的原则 与Observer模式无关。 您应该在适用的情况下应用oops原则以及设计模式。 该界面仅包含一种用于更改具体主题对象状态的方法。 package com.javacodegeeks.patterns.observerpattern;import java.util.List;public class CommentaryObject implements Subject,Commentary{private final ListObserverobservers;private String desc;private final String subjectDetails;public CommentaryObject(ListObserverobservers,String subjectDetails){this.observers observers;this.subjectDetails subjectDetails;}Overridepublic void subscribeObserver(Observer observer) {observers.add(observer);}Overridepublic void unSubscribeObserver(Observer observer) {int index observers.indexOf(observer);observers.remove(index);}Overridepublic void notifyObservers() {System.out.println();for(Observer observer : observers){observer.update(desc);}}Overridepublic void setDesc(String desc) {this.desc desc;notifyObservers();}Overridepublic String subjectDetails() {return subjectDetails;}} 上面的类用作实现Subject接口并提供其实现的具体主题。 它还将引用存储到已注册的观察者。 package com.javacodegeeks.patterns.observerpattern;public class SMSUsers implements Observer{private final Subject subject;private String desc;private String userInfo;public SMSUsers(Subject subject,String userInfo){if(subjectnull){throw new IllegalArgumentException(No Publisher found.);}this.subject subject;this.userInfo userInfo;}Overridepublic void update(String desc) {this.desc desc;display();}private void display(){System.out.println([userInfo]: desc);}Overridepublic void subscribe() {System.out.println(Subscribing userInfo to subject.subjectDetails() ...);this.subject.subscribeObserver(this);System.out.println(Subscribed successfully.);}Overridepublic void unSubscribe() {System.out.println(Unsubscribing userInfo to subject.subjectDetails() ...);this.subject.unSubscribeObserver(this);System.out.println(Unsubscribed successfully.);}} 上面的类是实现Observer接口的具体观察者类。 它还存储对它订阅的主题的引用以及可选的用于显示用户信息的userInfo变量。 现在让我们测试示例。 package com.javacodegeeks.patterns.observerpattern;import java.util.ArrayList;public class TestObserver {public static void main(String[] args) {Subject subject new CommentaryObject(new ArrayListObserver(), Soccer Match [2014AUG24]);Observer observer new SMSUsers(subject, Adam Warner [New York]);observer.subscribe();System.out.println();Observer observer2 new SMSUsers(subject, Tim Ronney [London]);observer2.subscribe();Commentary cObject ((Commentary)subject);cObject.setDesc(Welcome to live Soccer match);cObject.setDesc(Current score 0-0);System.out.println();observer2.unSubscribe();System.out.println();cObject.setDesc(Its a goal!!);cObject.setDesc(Current score 1-0);System.out.println();Observer observer3 new SMSUsers(subject, Marrie [Paris]);observer3.subscribe();System.out.println();cObject.setDesc(Its another goal!!);cObject.setDesc(Half-time score 2-0);}} 上面的示例将产生以下输出 Subscribing Adam Warner [New York] to Soccer Match [2014AUG24] ... Subscribed successfully.Subscribing Tim Ronney [London] to Soccer Match [2014AUG24] ... Subscribed successfully.[Adam Warner [New York]]: Welcome to live Soccer match [Tim Ronney [London]]: Welcome to live Soccer match[Adam Warner [New York]]: Current score 0-0 [Tim Ronney [London]]: Current score 0-0Unsubscribing Tim Ronney [London] to Soccer Match [2014AUG24] ... Unsubscribed successfully.[Adam Warner [New York]]: Its a goal!![Adam Warner [New York]]: Current score 1-0Subscribing Marrie [Paris] to Soccer Match [2014AUG24] ... Subscribed successfully.[Adam Warner [New York]]: Its another goal!! [Marrie [Paris]]: Its another goal!![Adam Warner [New York]]: Half-time score 2-0 [Marrie [Paris]]: Half-time score 2-0 如您所见起初有两个用户订阅了足球比赛并开始接收评论。 但是后来有一个用户取消了订阅因此该用户没有再收到评论。 然后另一个用户订阅并开始获取评论。 所有这一切都是动态发生的无需更改现有代码不仅如此假设该公司是否要在电子邮件上广播评论或者任何其他公司希望与该公司进行合作以广播评论。 您需要做的就是创建两个新类例如UserEmail和ColCompany并通过实现Observer接口使它们成为主题的Observer 。 据Subject知道它是观察者它将提供更新。 4. Java的内置观察者模式 Java内置了对Observer模式的支持。 最通用的是java.util包中的Observer接口和Observable类。 这些与我们的“主题和观察者”界面非常相似但是为您提供了许多现成的功能。 让我们尝试使用Java的内置Observer模式实现上述示例。 package com.javacodegeeks.patterns.observerpattern;import java.util.Observable;public class CommentaryObjectObservable extends Observable implements Commentary {private String desc;private final String subjectDetails;public CommentaryObjectObservable(String subjectDetails){this.subjectDetails subjectDetails;}Overridepublic void setDesc(String desc) {this.desc desc;setChanged();notifyObservers(desc);}public String subjectDetails() {return subjectDetails;} } 这次我们扩展了Observable类使我们的类成为一个主体请注意上述类没有任何对观察者的引用它是由父类处理的即Observable类。 但是我们声明了setDesc方法来更改对象的状态如上例所示。 setChanged方法是上层类的方法用于将更改的标志设置为true。 notifyObservers方法通知其所有观察者然后调用clearChanged方法以指示此对象不再更改。 每个观察者都有使用两个参数调用的update方法一个observable对象和arg参数。 package com.javacodegeeks.patterns.observerpattern;import java.util.Observable;public class SMSUsersObserver implements java.util.Observer{private String desc;private final String userInfo;private final Observable observable;public SMSUsersObserver(Observable observable,String userInfo){this.observable observable;this.userInfo userInfo;}public void subscribe() {System.out.println(Subscribing userInfo to ((CommentaryObjectObservable)(observable)).subjectDetails() ...);this.observable.addObserver(this);System.out.println(Subscribed successfully.);}public void unSubscribe() {System.out.println(Unsubscribing userInfo to ((CommentaryObjectObservable)(observable)).subjectDetails() ...);this.observable.deleteObserver(this);System.out.println(Unsubscribed successfully.);}Overridepublic void update(Observable o, Object arg) {desc (String)arg;display();}private void display(){System.out.println([userInfo]: desc);}} 让我们讨论一些关键方法。 上面的类实现了Observer接口该接口具有一个关键方法update 当主题调用notifyObservers方法时会调用该方法。 update方法采用一个Observable对象和一个arg作为参数。 addObserver方法用于将观察者注册到主题而deleteObserver方法用于将观察者从主题列表中删除。 让我们测试这个例子。 package com.javacodegeeks.patterns.observerpattern;public class Test {public static void main(String[] args) {CommentaryObjectObservable obj new CommentaryObjectObservable(Soccer Match [2014AUG24]);SMSUsersObserver observer new SMSUsersObserver(obj, Adam Warner [New York]);SMSUsersObserver observer2 new SMSUsersObserver(obj,Tim Ronney [London]);observer.subscribe();observer2.subscribe();System.out.println(------------------------------------------------------);obj.setDesc(Welcome to live Soccer match);obj.setDesc(Current score 0-0);observer.unSubscribe();obj.setDesc(Its a goal!!);obj.setDesc(Current score 1-0);} } 上面的示例将产生以下输出 Subscribing Adam Warner [New York] to Soccer Match [2014AUG24] ... Subscribed successfully. Subscribing Tim Ronney [London] to Soccer Match [2014AUG24] ... Subscribed successfully. ------------------------------------------------------ [Tim Ronney [London]]: Welcome to live Soccer match [Adam Warner [New York]]: Welcome to live Soccer match [Tim Ronney [London]]: Current score 0-0 [Adam Warner [New York]]: Current score 0-0 Unsubscribing Adam Warner [New York] to Soccer Match [2014AUG24] ... Unsubscribed successfully. [Tim Ronney [London]]: Its a goal!! [Tim Ronney [London]]: Current score 1-0 上面的类创建一个主题和两个观察者。 observer的subscribe方法将其自身添加到主题观察者列表中。 然后setDesc更改主题的状态该主题调用setChanged方法将更改标志设置为true并通知观察者。 结果调用了观察者的update方法该方法在内部对display方法进行分类以显示结果。 后来一位观察者unsubscribe d即从观察者列表中将其删除。 由于此原因以后的评论未更新。 Java为观察者模式提供了内置功能但是它也有其自身的缺点。 Observable是一个类您必须对其进行子类化。 这意味着您不能将Observable行为添加到已经扩展了另一个超类的现有类上。 这限制了重用潜力。 您甚至无法创建自己的实现以与Java的内置Observer API配合使用。 Observable API中的某些方法受到保护。 这意味着除非已将Observable子类setChange否则无法调用setChange类的方法。 而且您甚至无法创建Observable类的实例并将其与自己的对象组合在一起因此必须子类化。 此设计违反了“优先继承而不是继承”的设计原则。 5.何时使用观察者模式 在以下任何一种情况下请使用Observer模式 当抽象具有两个方面时一个方面依赖于另一个方面。 将这些方面封装在单独的对象中使您可以分别更改和重用它们。 当更改一个对象需要更改其他对象时您不知道需要更改多少个对象。 一个对象何时应该能够通知其他对象而无需假设这些对象是谁。 换句话说您不希望这些对象紧密耦合。 6.下载源代码 这是“观察者模式”的一课。 您可以在此处下载源代码 ObserverPattern –第7课 翻译自: https://www.javacodegeeks.com/2015/09/observer-design-pattern.htmljava 观察者模式示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设做得好五金 东莞网站建设

背景 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预…

想自己做网站做推广国家职业技能培训学校

Kotlin协程 背景定义实践GlobalScope.launchrunBlocking业务实践 背景 在项目实践过程中,笔者发现很多异步或者耗时的操作,都使用了Kotlin中的协程,所以特地研究了一番。 定义 关于协程(Coroutine),其实…

抄袭别人网站唯美个人网站欣赏

摘要 风能是目前国内外应用较为广泛的一种绿色可再生能源,近几年我国风电产业的发展十分迅速。然后,越来越多的风力发电系统建并网,风力发电产生的电能受外界因素影响较大,具有一定的随机性和波动性,给并网后的电力系统…

南阳锐诚网站建设wordpress 新年插件

windows桌面调节分辨率即可:

个人网站建设规划实践报告上海seo博客

由于公司项目是在全屏下的,所有界面都是全屏,唯有弹出提示框的时候,会出现系统的导航栏,由于是平板,导航栏信息比较多,该项目属于永不让用户进入原系统的项目。所以有导航栏,就让用户有了机会进…

免费做爰网站建站专家

欧几里得算法: int gcd(int x,int y){if(y) return gcd(y,x%y);return x; }扩展欧几里得算法: 先说一个整体思路: 先求AxBygcd(A,B);的一个解x,y 然后我们可以求他的通解 然后求AxByC的通解 我们先看看怎么求AxBygcd(A,B);的一…

做微商都去哪些网站留言中山做网站推广公司

D 是否启用本地任务调试模式 hive.debug.localtask 是 Apache Hive 中的一个配置参数,用于控制是否启用本地任务调试模式。在调试模式下,Hive 将尝试在本地模式下运行一些任务,以便更容易调试和分析问题。 具体来说,当 hive.de…

下列关于网站开发中网页上传装饰公司网站方案

来源 | 阿里巴巴中间件作者 | 王树彬,阿里巴巴闲鱼架构负责人责编 | Carol2014年6月28日,阿里即将赴美上市的这一年,西溪园区的一个茶水间里,28个人日夜赶工了三个月后,上线了一个闲置交易平台——闲鱼。今年5月份&…

女子医院网站优化公司推广效果最好的平台

学习好Windows10应用这门课程,应该()。 A重视理论学习 B重视上机操作,多练多试 C只看不练 D可以随便学习一下 正确 正确答案:左边查询 学生答案:B 2在使用Windows时遇到困难,(&#…

单一产品销售网站建设模板泾川县住房和城乡建设局网站

Flutter制作插件有两种方式(以下以android和ios为例): 目录 1.直接在主工程下的android和ios项目内写插件代码:2.创建独立Flutter Plugin项目,制作各端插件后,再引入项目:1. 创建Flutter Plugin…

房地产手机网站模板大连金州新区规划建设局网站

安全软件首推-火绒,良心之作。比起360安全卫士、腾讯电脑管家,它无广告,无捆绑,无劫持,无弹窗,还免费。我认为最喜人最贴心的功能属它的‘弹窗拦截’了,可以拦截程序推送烦人的弹窗。五大浓缩亮…

网站更新了网上购物型网站

InfoQ:您的论文“On the Definition of Microservice Bad Smells”涉及非常多的微服务不良做法,但如果要用几个大类别来列举危害性比较大的微服务反模式,您认为会是哪几类?另外,您能再大概分析说明下造成这个几个反模式…

会员系统网站制作做介绍的英文网站

文章目录 效果展示说明利用工具整体思路Puppeteer 使用笔记保持登录状态打开新的页面点击 dialog跳转页面设置页面可见窗口大小寻找元素等待元素出现 整体代码 效果展示 说明 看了看网上很少做这个功能,但是我有这个需求,就抽出时间写了个简单的工具目前…

网站广告招商应该怎么做泉州市亿民建设发展有限公司网站

主要是课堂的补充(yysy,我觉得课堂的教育模式真有够无聊的,PPT、写作业、考试,感受不到知识的魅力。 它告诉我们什么? 空间和时间中的任何模式都可以被看作不同频率的正弦模式的叠加。 为什么重要? 频率分量…

网站模板放哪网站建设平台策划

一、简介 CarWatchdogService 是一个安卓汽车平台中的服务,用于监控和管理车载系统的健康状态,它定期监视系统中的各个组件,以确保它们始终处于活动状态,并在出现故障时进行修复或重启。该服务可以帮助确保平台的稳定性和可靠性,防止应用程序挂起或系统崩溃。 主要功能 系…

网站建站啥意思国际新闻最新10条

【1】 github上创建远程库 注意 ,远程库的名字要与本地库相同 【2】新建github远程库别名origin 【3】 代码提交 git add ./* : 把修改内容添加到暂存区 ; git commit -m msg : 提交暂存区的修改内容到本地库; g…

房地产销售平台网站建设网络服务器配置与管理项目报告

需求 基于用户地理位置,对酒店做简单的排序,非个性化的推荐。酒店评分包含以下: 酒店类型(依赖用户历史订单数据):希望匹配出更加符合用户使用的酒店类型酒店评分:评分高的酒店用户体验感好ge…

南京网站建设培训班建材交易平台

生成n对括号的合法全排列: 给定一整数N,输出N对括号的合法全排列 例: 2 3 ()() (()) ()()() (())() ()(()) ((())) 分析: 很经典的需要迭代来进行实现。 迭代的关键在于找到跳出迭代的条件,以及每次迭代的策略。 出口&…

深圳专业建设网站服务提高百度快速排名

信号量是特殊的队列--无法存储消息的队列,相关的接口函数声明在semphr.h中,通过宏定义替换队列函数实现。 4.1创建二值信号量xSemaphoreCreateBinary() 4.1.1函数原型 queueQUEUE_TYPE_BINARY_SEMAPHORE:一个宏,表示创建队列的…

网站 欣赏互动平台是什么意思

接口测试是软件开发过程中不可或缺的一环,它主要是对软件系统中各个模块之间的接口进行测试,以验证它们是否能够正确地交互和协作。接口测试的目的是确保软件系统的各个部分能够无缝地协同工作,从而提高整个系统的质量和稳定性。 一、什么是接…