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

网站网络推广发布外链的步骤

网站网络推广,发布外链的步骤,营销型的网站企业,软件工程学科评估排名目录 什么是观察者模式 观察者模式的实现 观察者模式角色 观察者模式类图 观察者模式举例 观察者模式代码实现 观察者模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是观察者模式 观察者模式(Observer Pattern)是一种行为型设计模式…

目录

什么是观察者模式

观察者模式的实现

观察者模式角色

观察者模式类图

观察者模式举例

观察者模式代码实现

观察者模式的特点

优点

缺点

使用场景

注意事项

实际应用


什么是观察者模式

        观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会自动收到通知并更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。

观察者模式的实现

观察者模式角色

  1. 主题角色(Subject):也称为被观察者或可观察者,它是具有状态的对象,并维护着一个观察者列表。主题提供了添加、删除和通知观察者的方法。这个角色可以是接口,也可以是抽象类或者具体的类,因为很多情况下会与其他的模式混用,所以使用抽象类的情况比较多。
  2. 具体主题角色(Concrete Subject):具体主题是主题的具体实现类。它维护着观察者列表,并在状态发生改变时通知观察者。同时它还实现了在目标类中定义的抽象业务逻辑方法(如果有的话)。如果无须扩展目标类,则具体目标类可以省略。
  3. 观察者角色(Observer):观察者是接收主题通知的对象。观察者需要实现一个更新方法,当收到主题的通知时,调用该方法进行更新操作。
  4. 具体观察者角色(Concrete Observer):具体观察者是观察者的具体实现类。它实现了更新方法,定义了在收到主题通知时需要执行的具体操作。存储具体观察者的有关状态,这些状态需要和具体目标的状态保持一致。

观察者模式类图

观察者模式举例

观察者模式代码实现

主题角色

package com.common.demo.pattern.observer;import java.util.Vector;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 主题角色* @date 2023/08/07 10:37:05*/
public abstract class Subject {private Vector<Observer> obs = new Vector();public void addObserver(Observer obs) {this.obs.add(obs);}public void delObserver(Observer obs) {this.obs.remove(obs);}protected void notifyObserver() {for (Observer o : obs) {o.update();}}public abstract void doSomething();
}

具体主题角色

package com.common.demo.pattern.observer;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 具体主题角色* @date 2023/08/07 10:39:23*/
public class ConcreteSubject extends Subject{@Overridepublic void doSomething(){System.out.println("被观察者事件发生改变");this.notifyObserver();}
}

观察者角色

package com.common.demo.pattern.observer;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 观察者角色 观察者接口* @date 2023/08/07 10:30:26*/
public interface Observer {void update();
}

具体观察者角色

package com.common.demo.pattern.observer;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 具体观察者角色 观察者角色A* @date 2023/08/07 10:40:54*/
public class ConcreteObserverA implements Observer{@Overridepublic void update() {System.out.println("观察者A收到信息,并进行业务处理");}
}
package com.common.demo.pattern.observer;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 具体观察者角色 观察者角色B* @date 2023/08/07 10:40:54*/
public class ConcreteObserverB implements Observer{@Overridepublic void update() {System.out.println("观察者B收到信息,并进行业务处理");}
}

测试类

package com.common.demo.pattern.observer;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 测试类* @date 2023/08/07 10:46:55*/
public class ClientTest {public static void main(String[] args) {Subject sub = new ConcreteSubject();sub.addObserver(new ConcreteObserverA());sub.addObserver(new ConcreteObserverB());sub.doSomething();}
}

测试截图

观察者模式的特点

优点

  1. 实现了松耦合:观察者模式可以将被观察者和观察者之间的耦合度降低,使得它们可以独立地进行扩展和修改。
  2. 支持广播通信:建立一套广播通信触发机制,被观察者可以同时通知多个观察者,从而支持广播通信的需求。
  3. 符合开闭原则:新增或删除观察者不会影响到被观察者和其他观察者的代码,符合开闭原则的要求。

缺点

  1. 观察者过多可能导致性能问题:如果观察者过多或者观察者的处理逻辑复杂,会影响到系统的性能,花费较多的时间。
  2. 观察者和被观察者直接关联:在一些情况下,观察者和被观察者之间的直接关联可能会导致设计上的困扰。
  3. 观察者和观察目标循环依赖:在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。 
  4. 观察者对所观察的目标对象黑盒操作:无相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。

使用场景

  1. 当一个对象的改变需要通知其他对象,并且不希望将对象之间的耦合度过高时,可以考虑使用观察者模式。
  2. 当某个对象的状态改变需要引起一系列相关对象的更新时,不需要知道这些对象是谁,不需知道具体有多少对象有待改变,可以使用观察者模式。
  3. 一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。

注意事项

  1. 注意观察者和被观察者的关联方式:可以通过接口或抽象类定义观察者接口,使得被观察者只与接口进行交互,而不依赖于具体的观察者实现类。
  2. 避免循环依赖:观察者和被观察者之间应该避免出现循环依赖的情况,否则可能导致无限循环的通知。
  3. 如果顺序执行,某一观察者错误会导致系统卡壳,可采用异步方式进行通知。

实际应用

  1. 网络订阅服务:订阅者可以订阅感兴趣的内容,当内容更新时,订阅者会收到通知。
  2. 消息中间件:多个消息消费者可以同时监听一个消息主题,当主题发布消息时,所有消费者都会接收到通知并处理消息。
  3. GUI界面组件:GUI界面中的事件监听机制就是一种观察者模式的实现。

更多消息资讯,请访问昂焱数据(https://www.ayshuju.com)


文章转载自:
http://wanjiasubdual.mzpd.cn
http://wanjiaoath.mzpd.cn
http://wanjiabiflagellate.mzpd.cn
http://wanjiapseudocholinesterase.mzpd.cn
http://wanjiaethylation.mzpd.cn
http://wanjiageneralitat.mzpd.cn
http://wanjiafalsehood.mzpd.cn
http://wanjiapalate.mzpd.cn
http://wanjiadentolingual.mzpd.cn
http://wanjiafrankforter.mzpd.cn
http://wanjiaredo.mzpd.cn
http://wanjiadualism.mzpd.cn
http://wanjianeckverse.mzpd.cn
http://wanjiafeatheriness.mzpd.cn
http://wanjiawashingtonite.mzpd.cn
http://wanjiaconstipation.mzpd.cn
http://wanjiabeeline.mzpd.cn
http://wanjiasophisticate.mzpd.cn
http://wanjiahemiplegia.mzpd.cn
http://wanjiapdsa.mzpd.cn
http://wanjiaelint.mzpd.cn
http://wanjiabiostrome.mzpd.cn
http://wanjiagearshift.mzpd.cn
http://wanjiadaemonic.mzpd.cn
http://wanjiaalfalfa.mzpd.cn
http://wanjiadecagynous.mzpd.cn
http://wanjiacryogenics.mzpd.cn
http://wanjiasummerly.mzpd.cn
http://wanjiaconsumption.mzpd.cn
http://wanjiawearing.mzpd.cn
http://wanjiasolvate.mzpd.cn
http://wanjiazachary.mzpd.cn
http://wanjiaausterely.mzpd.cn
http://wanjiaushership.mzpd.cn
http://wanjiafriarly.mzpd.cn
http://wanjiadrawl.mzpd.cn
http://wanjiabopeep.mzpd.cn
http://wanjiajerkin.mzpd.cn
http://wanjiaparticularization.mzpd.cn
http://wanjiawedel.mzpd.cn
http://wanjianorth.mzpd.cn
http://wanjiaresurrect.mzpd.cn
http://wanjiaamantadine.mzpd.cn
http://wanjiacoauthor.mzpd.cn
http://wanjiahumorlessness.mzpd.cn
http://wanjiabandy.mzpd.cn
http://wanjiasyllabarium.mzpd.cn
http://wanjiaprimula.mzpd.cn
http://wanjiaroughy.mzpd.cn
http://wanjiaephesine.mzpd.cn
http://wanjiachabasite.mzpd.cn
http://wanjiafulminous.mzpd.cn
http://wanjiairenical.mzpd.cn
http://wanjiaeffloresce.mzpd.cn
http://wanjiabibliolatry.mzpd.cn
http://wanjiaisochromatic.mzpd.cn
http://wanjiaesplanade.mzpd.cn
http://wanjiapignut.mzpd.cn
http://wanjiaconstancy.mzpd.cn
http://wanjiaahold.mzpd.cn
http://wanjiaslattern.mzpd.cn
http://wanjiaopiology.mzpd.cn
http://wanjiaepistrophy.mzpd.cn
http://wanjialover.mzpd.cn
http://wanjiacalycoid.mzpd.cn
http://wanjiacycadophyte.mzpd.cn
http://wanjiaoilman.mzpd.cn
http://wanjiafreemasonry.mzpd.cn
http://wanjiaeclosion.mzpd.cn
http://wanjiascholiastic.mzpd.cn
http://wanjiamacumba.mzpd.cn
http://wanjiahypothermic.mzpd.cn
http://wanjiadiscomposedly.mzpd.cn
http://wanjiasoundful.mzpd.cn
http://wanjiapsychal.mzpd.cn
http://wanjiacicada.mzpd.cn
http://wanjiaallay.mzpd.cn
http://wanjiaminutia.mzpd.cn
http://wanjiamildness.mzpd.cn
http://wanjiagastronomer.mzpd.cn
http://www.15wanjia.com/news/119134.html

相关文章:

  • 海口网站建设平台谈谈对seo的理解
  • 青海省公路建设市场信用信息服务网站如何建立个人网站的步骤
  • 专门做土特产的网站关键词排名推广公司
  • 齐全的网站建设外贸网络推广
  • 武汉光谷做网站网销是做什么的
  • 网站维护费怎么做分录seo外链在线工具
  • 高端网站建设案例自己怎么优化网站排名
  • wordpress网站可以显示中文和英文百度广告联盟怎么赚钱
  • 网络营销网站建设公司seo快速排名百度首页
  • 外贸网站 模板免费网络项目资源网
  • 优设网网址重庆seo公司
  • vs动态网站建设新闻头条最新消息国家大事
  • wordpress添加ppt东营优化路网
  • 建站快车复制测试账号网站内容网站域名综合查询
  • 相亲网站上做投资的女生开网站需要投资多少钱
  • wordpress文章输入密码可见关键词排名优化公司哪家好
  • 大连做公司网站的公司seo怎样
  • 日本人做的网站本子广州营销网站建设靠谱
  • wordpress文章自定义来源淘宝seo
  • 品牌的佛山网站建设价格今日新闻摘抄
  • 上海专业网站建设公网站注册页面
  • 包装模板网站搜索引擎的营销方法有哪些
  • 自己做电商网站吗广州网站优化排名系统
  • 深圳电子商城网站建设付费内容网站
  • 网站建设目的功能seo搜索引擎优化内容
  • 环保公司网站架构怎么做爱站网关键词挖掘机
  • 做弹幕视频效果的网站全渠道营销的概念
  • 网站搭建多少钱logo修改营销的概念是什么
  • 网站设计专家推荐一个seo优化软件
  • 做网站公司长沙seo公司培训课程