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

连锁酒店网站方案/网络营销八大职能

连锁酒店网站方案,网络营销八大职能,做美食的网站,驻马店广告制作公司定义 当对象之间存在一对多的关系时,被依赖的对象发生变化,需要通知到依赖它的所有对象。 举个例子 由于疫情的影响,各地的学校纷纷延迟了开学时间,延迟开学的消息由学校传达给老师和家长(不考虑由老师转发给家长的…

定义

当对象之间存在一对多的关系时,被依赖的对象发生变化,需要通知到依赖它的所有对象。

举个例子

由于疫情的影响,各地的学校纷纷延迟了开学时间,延迟开学的消息由学校传达给老师和家长(不考虑由老师转发给家长的情况),具体的开学时间也是一样。这个例子中学校与老师和家长之间具有一对多的关系,学校的通知需要都通知到他们,结合观察者模式来code看看。

  • 首先定义被观察者:学校

维护一个 Observer 的数组,老师和家长可以通过 registerObserver 方法注册;学校通过 publishNotice 方法发布通知

import java.util.ArrayList;
import java.util.List;
import observer.consumer.Observer;public class School {private String name;public School(String name) {this.name = name;}private List<Observer> observers = new ArrayList<>();public void registerObserver(Observer observer) {observers.add(observer);}public void publishNotice(String message) {System.out.println("I'm school: " + name + ", send message: " + message);observers.forEach(e -> e.update(message));}
}
  • 定义接口 Observer
public interface Observer {void update(String message);
}
  • 定义观察者:老师
public class Teacher implements Observer {private String name;public Teacher(String name) {this.name = name;}@Overridepublic void update(String message) {System.out.println("I'm teacher: " + name + ", received message: " + message);// do something}
}
  • 定义观察者:家长
public class Parent implements Observer {private String name;public Parent(String name) {this.name = name;}@Overridepublic void update(String message) {System.out.println("I'm parent: " + name + ", received message: " + message);// do something}
}
  • 最后通过 main 方法执行发布延迟开学的通知
public class Main {public static void main(String[] args) {Parent parent = new Parent("ZS");Teacher teacher = new Teacher("LS");School school = new School("CSU");school.registerObserver(parent);school.registerObserver(teacher);school.publishNotice("Delay the start of school");}
}

在这里插入图片描述

优缺点

  • 优点

    • 从上面的例子中看到,观察者与被观察者之间是抽象耦合的。School 类并不直接调用 Teacher & Parent 的 update 方法,而是面向接口编程,调用其接口 Observer 的方法。好处就是假如要添加一个新的观察者,直接继承 Observer 类并注册到 School 即可。
    • 建立了一套触发机制。假如 School 要发送各个学生的成绩,同样复用这套机制即可,不需要重新实现。
  • 缺点

    • 如果观察者过多,那么执行通知要花费很长时间(遍历大数组),不需要的观察者要及时取消注册。
    • 如果观察者与被观察者循环依赖,可能导致循环调用,导致系统崩溃。
    • 观察者不知道所观察的对象是怎么变化的,只知道变化。
http://www.lbrq.cn/news/762265.html

相关文章:

  • 微店那样的网站怎么做/seo关键词查询
  • 建站塔山双喜/万网查询
  • 软件开发项目/seo谷歌外贸推广
  • 怎样做打赏网站/关键字c语言
  • 福田做棋牌网站建设找哪家公司好/百度竞价seo排名
  • app要有网站做基础知识/班级优化大师app下载学生版
  • 可以做简历的网站/网络电商推广方案
  • 做微信表情的微信官方网站/浙江seo技术培训
  • 申请网站就是做网站吗/重庆森林电影简介
  • 装修案例欣赏/长沙百度首页优化排名
  • 美工做图哪个网站好/网站怎么做推广
  • 做网站需要懂哪些语言/网站seo推广计划
  • 龙岗网站/app推广联盟平台
  • 万户网站制作/百度sem是什么意思
  • 同企网站建设做网站/网络营销八大工具
  • 做数据分析好看的网站/培训心得体会范文大全1000字
  • 怎样做免费网站卖东西/指数平滑法
  • 服务建设网站/网页制作的步骤
  • 商城手机网站建设多少钱/四种基本营销模式
  • 企业网站如何优化排名/站长工具网址是多少
  • 网站 水印/谷歌收录提交入口
  • 商城源代码/seo推广方案怎么做
  • 长春怎么注册网站平台/东莞排名优化团队
  • 手机怎么做电子书下载网站/五年级下册数学优化设计答案
  • 仿苹果手机 网站源码/网站首页排名
  • 网站 asp php/干净无广告的搜索引擎
  • 网站构建的基本流程/济南seo排行榜
  • 判断网站cms/手机制作网站app
  • 网站开发建设须知/指数函数图像
  • 网站空间测试/网站推广平台排行
  • Docker部署美化SunPanel导航页
  • [系统架构]系统架构基础知识(一)
  • amis表单较验
  • Pytest项目_day13(usefixture方法、params、ids)
  • OrbStack 入门教程:macOS 上的轻量级容器与虚拟机管理工具
  • Nestjs框架: RBAC基于角色的权限控制模型初探