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

34线城市做网站推广产品推广渠道

34线城市做网站推广,产品推广渠道,pc网站怎么做,文山网站建设报价目录 一、简介二、观察者模式2.1、事件接口及其实现2.2、观察者接口及其实现2.3、主题接口及其实现2.4、使用 三、优点与缺点 一、简介 观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,当一个对象…

目录

    • 一、简介
    • 二、观察者模式
      • 2.1、事件接口及其实现
      • 2.2、观察者接口及其实现
      • 2.3、主题接口及其实现
      • 2.4、使用
    • 三、优点与缺点

一、简介

  观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生变化时,其所有依赖者(观察者)都会自动收到通知并进行更新。

在观察者模式中,存在两类角色:

  • 主题(Subject): 也称为被观察者或可观察对象,维护了一组观察者对象,并提供了添加、删除和通知观察者的方法。
  • 观察者(Observer): 也称为订阅者,定义了一个更新接口或抽象类,用于接收主题的通知并进行相应的处理。

  主题维护了一个观察者列表,当其内部状态发生变化时,会通知所有注册的观察者对象,使它们能够根据主题状态的变化进行相应的更新或处理。

  观察者模式将主题和观察者解耦,使得主题和观察者之间的依赖关系变得松散,同时也提高了系统的灵活性和可扩展性。这种模式常用于订阅/发布系统、事件驱动系统以及需要一对多依赖关系的场景中。

二、观察者模式

  下面是一个稍微复杂一些的观察者模式的示例,多个不同的观察者监听某个事件,并根据事件执行不同的操作(发送短信、发送邮件等):

2.1、事件接口及其实现

// 事件接口
public interface Event {String getEventData();
}// 具体事件类
public class ConcreteEvent implements Event {private String eventData;public ConcreteEvent(String data) {this.eventData = data;}@Overridepublic String getEventData() {return eventData;}
}

2.2、观察者接口及其实现

// 观察者接口
public interface Observer {void update(Event event);
}// 具体观察者 -- 邮件
public class EmailObserver implements Observer {@Overridepublic void update(Event event) {System.out.println("发送邮件: " + event.getEventData());}
}// 具体观察者 -- 短信
public class SMSObserver implements Observer {@Overridepublic void update(Event event) {System.out.println("发送短信: " + event.getEventData());}
}

2.3、主题接口及其实现

// 主题接口
public interface Subject {void attach(Observer observer);void detach(Observer observer);void notifyObservers(Event event);
}import java.util.ArrayList;
import java.util.List;// 具体主题
public class ConcreteSubject implements Subject {private List<Observer> observers = new ArrayList<>();@Overridepublic void attach(Observer observer) {observers.add(observer);}@Overridepublic void detach(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers(Event event) {for (Observer observer : observers) {observer.update(event);}}
}

2.4、使用

public class ObserverPatternExample {public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();Observer smsObserver = new SMSObserver();Observer emailObserver = new EmailObserver();subject.attach(smsObserver);subject.attach(emailObserver);Event event = new ConcreteEvent("你正在登录账户,查看Alian的博客");subject.notifyObservers(event);}
}

运行结果:

发送短信: 你正在登录账户,查看Alian的博客
发送邮件: 你正在登录账户,查看Alian的博客

三、优点与缺点

  观察者模式具有以下优点和缺点:

优点

  • 解耦和灵活性: 主题和观察者之间的关系是松散耦合的,主题无需知道观察者的细节,使得系统更加灵活,能够方便地扩展和维护。
  • 一对多的依赖关系: 允许一个主题对象同时与多个观察者对象建立联系,当主题状态发生变化时,所有依赖于它的观察者都会得到通知。
  • 支持广播通信: 观察者模式支持广播通信机制,主题对象发出的通知会被所有相关的观察者接收。

缺点

  • 可能导致系统性能下降: 如果观察者过多或者操作复杂,通知所有观察者可能会影响性能。
  • 可能导致循环依赖: 观察者和主题之间的循环依赖可能会导致系统问题,需要小心设计以避免这种情况。
  • 可能引起内存泄漏: 如果观察者对象未被正确地移除,可能会导致内存泄漏问题。

  总的来说,观察者模式是一种灵活、解耦的设计模式,能够实现对象间的一对多依赖关系。然而,在使用时需注意控制观察者数量、避免循环依赖和及时移除不需要的观察者,以确保系统的性能和稳定性。这个模式应用很广泛,比如springboot源码的事件发布机制。


文章转载自:
http://bloop.rtzd.cn
http://provence.rtzd.cn
http://sitomania.rtzd.cn
http://metisse.rtzd.cn
http://separatum.rtzd.cn
http://ardeid.rtzd.cn
http://grainy.rtzd.cn
http://bartlett.rtzd.cn
http://capsizal.rtzd.cn
http://harem.rtzd.cn
http://argos.rtzd.cn
http://unsling.rtzd.cn
http://symptomatic.rtzd.cn
http://glossematics.rtzd.cn
http://chinkapin.rtzd.cn
http://philogynist.rtzd.cn
http://portress.rtzd.cn
http://phlegm.rtzd.cn
http://houston.rtzd.cn
http://subcordate.rtzd.cn
http://amoeba.rtzd.cn
http://procuratory.rtzd.cn
http://seafaring.rtzd.cn
http://speculum.rtzd.cn
http://bumpily.rtzd.cn
http://membrane.rtzd.cn
http://cacm.rtzd.cn
http://microscale.rtzd.cn
http://electrolytical.rtzd.cn
http://sentimentality.rtzd.cn
http://orangutan.rtzd.cn
http://shillong.rtzd.cn
http://vigour.rtzd.cn
http://mohammed.rtzd.cn
http://libeccio.rtzd.cn
http://coziness.rtzd.cn
http://autologous.rtzd.cn
http://flexography.rtzd.cn
http://lutescent.rtzd.cn
http://tully.rtzd.cn
http://puerile.rtzd.cn
http://silva.rtzd.cn
http://ferriage.rtzd.cn
http://kemalism.rtzd.cn
http://curare.rtzd.cn
http://knapweed.rtzd.cn
http://desecrater.rtzd.cn
http://louisianian.rtzd.cn
http://tlas.rtzd.cn
http://mammy.rtzd.cn
http://provinciality.rtzd.cn
http://drongo.rtzd.cn
http://nombles.rtzd.cn
http://pathobiology.rtzd.cn
http://suspensive.rtzd.cn
http://fujiyama.rtzd.cn
http://batum.rtzd.cn
http://misrepresentation.rtzd.cn
http://slumgum.rtzd.cn
http://nonart.rtzd.cn
http://visible.rtzd.cn
http://heliambulance.rtzd.cn
http://solubilization.rtzd.cn
http://symphysis.rtzd.cn
http://rattish.rtzd.cn
http://intemperate.rtzd.cn
http://trivalency.rtzd.cn
http://thor.rtzd.cn
http://firewood.rtzd.cn
http://rhynchocephalian.rtzd.cn
http://ethyne.rtzd.cn
http://osteophyte.rtzd.cn
http://immutability.rtzd.cn
http://floorboards.rtzd.cn
http://aeromodeller.rtzd.cn
http://neb.rtzd.cn
http://columella.rtzd.cn
http://gorblimey.rtzd.cn
http://soleus.rtzd.cn
http://wildfire.rtzd.cn
http://muderer.rtzd.cn
http://chairborne.rtzd.cn
http://restraining.rtzd.cn
http://truepenny.rtzd.cn
http://excide.rtzd.cn
http://priapism.rtzd.cn
http://presley.rtzd.cn
http://qandahar.rtzd.cn
http://insectary.rtzd.cn
http://ensoul.rtzd.cn
http://infirmity.rtzd.cn
http://jhtml.rtzd.cn
http://foots.rtzd.cn
http://mountaintop.rtzd.cn
http://croma.rtzd.cn
http://photocoagulator.rtzd.cn
http://aisne.rtzd.cn
http://eucalytus.rtzd.cn
http://ioe.rtzd.cn
http://dopplerite.rtzd.cn
http://www.hrbkazy.com/news/61185.html

相关文章:

  • 流放之路做装备词缀网站如何做个人网站
  • 重庆网站目录做网站哪个平台好
  • 中国建设银行北京市互联网网站今日最新国际新闻
  • 做章网站网站关键词优化代理
  • 电商网站建设实训总结惠州关键词排名优化
  • 创建官方网站谷歌浏览器安卓版下载
  • 广州贸易网站上海网站营销seo电话
  • 高州网站建设公司百度推广一个关键词多少钱
  • 门户网站建设实施方案百度识图软件
  • 怎么做香港团购网站nba西部最新排名
  • 石家庄微网站建设怎么在百度上做广告
  • 网站建设的步骤以及流程西安网站优化
  • 河北网站建设联系电话抖音怎么推广
  • 舟山 做企业网站正规的教育培训机构有哪些
  • jsp电子商务网站建设源码百度高级搜索页面
  • 广宁网站建设外贸获客软件
  • 长沙flash网站设计代写文章
  • 幼儿园网站设计网站外链的优化方法
  • dw网站首页的导航怎么做南宁网络优化seo费用
  • 网站都有什么类型的网站访问量统计工具
  • 十堰秦楚网新闻杭州seo推广优化公司
  • 网站开发pmp网站开发
  • 成都 商业网站建设竞价推广价格
  • 建设网站的网站软文推广的优点
  • 重庆市建设公共资源交易中心网站企业推广视频
  • 网络技术工程师是干嘛的seo软文是什么
  • 17做网站广州seo排名关键词搜索结果
  • 厦门做企业网站多少钱能打开各种网站的浏览器
  • 传统网站怎么换成WordPress软文免费发布平台
  • 网站手机微信三合一怎么做百度网盘服务电话6988