2022-08-21-设计模式之观察者模式

news/2024/2/24 7:19:57/文章来源:https://www.cnblogs.com/YiMingXiaoBuYiMengXiaoNai/p/DesignModeOfObserverMode.html

java设计模式之观察者模式-学习整理

23种设计模式---观察者模式

什么是观察者模式?定义是什么?观察者模式包含的角色有什么?
image

四个核心的角色:抽象观察者,具体观察者;抽象被观察者,具体被观察者:
image

具体观察者及其行动:
image

具体实现及测试类:
image
image

轮廓实现-通用代码:
image

观察者模式通用参考代码:
image

观察者模式的特点:
image

观察者模式的应用场景:
image

设计模式对比:
观察者模式PK发布订阅模式:
image

策略模式PK简单工厂模式:
image

参考资料:
1)kkb-wln-teacher直播公开课:
https://www.kaikeba.com/open/item?c=1647
2)其他网络资料

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

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

相关文章

[delphi踩坑] ActiveList成员取名不能与属性名相同

刚开始新建时,我acok是取名为mrok,acno是取名mrno,所以直接弹错"TModalResult" 与 "TAction"不兼容 最后是在重写 ModalResult:=mr....时,看到mrok和mrno提示后面的属性,居然是TAction,才明白原来是取名不规范造成的! 大致如下: 正常情况是这样的:

div内多行文字, 溢出部分用省略号显示

1 /*内容*/2 .content{3 width:100%;4 height:70px;5 font-size: small;6 margin-top: 10px;7 8 text-overflow: -o-ellipsis-lastline;9 overflow: hidden; 10 text-overflow: ellipsis; 11 display: -webkit-box; 12 -webkit-line-clamp: 4;/* ————这个…

组织结构(职能型组织、矩阵组织、项目型组织、复合型组织)

最上面是高层领导,下面是项目经理,也有公司可能会叫做产品经理或事业部经理,他们负责一个大的项目组,每个项目组中有各自的成员。 这是项目型组织结构,另一种模式是矩阵式的组织结构,这种结构又可以分为弱矩阵、平衡矩阵和强矩阵。 在弱矩阵和平衡矩阵中,项目管理还是会…

11.4垃圾回收器

目录1.GC分类与性能指标垃圾回收器概述线程数分类工作模式分类碎片处理方式分类工作内存区间分类评估GC的性能指标2.不同的垃圾回收器概述垃圾收集器发展史7款经典的垃圾收集器垃圾收集器组合如何查看默认的垃圾收集器3.Serial回收器:串行回收4.ParNew回收器:并行回收5.Paral…

关于DolphinScheduler

Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行…

postgresql使用group by进行数据去重-2022新项目

一、业务场景数据去重是web开发中经常会遇到的方式之一,数据库操作中有一个关键字distinct主要就是用来做这件事,用来进行去重。 比如进行统计查询的时候,可以这样写 select count(dintinct(需要去重的字段)) from table;这样如果统计的时候,某个字段存在 重复时,就可以很…

如何在CSS中使用变量

前言 CSS变量(官方称为自定义属性)是用户定义的值,它可以在你的代码库中设置一次并多次使用。它们使管理颜色、字体、大小和动画值变得更加容易,并确保整个web应用的一致性。 举个例子,你可以将品牌颜色设置为一个CSS属性(--primarycolor: #7232FA),并在任何使用品牌颜…

25个例子学会Pandas Groupby 操作

groupby是Pandas在数据分析中最常用的函数之一。它用于根据给定列中的不同值对数据点(即行)进行分组,分组后的数据可以计算生成组的聚合值。 如果我们有一个包含汽车品牌和价格信息的数据集,那么可以使用groupby功能来计算每个品牌的平均价格。在本文中,我们将使用25个示例来…

PerfView专题 (第七篇):如何洞察触发 GC 的 C# 代码?

一:背景 上一篇我们聊到了如何用 PerfView 洞察 GC 的变化,但总感觉还缺了点什么? 对,就是要跟踪到底是什么代码触发了 GC,这对我们分析由于 GC 导致的 CPU 爆高有非常大的参考价值,在以前我都是用 WinDBG 来实现,但这玩意需要做一些侵入性操作,实战起来不是那么丝滑,…

Tomcat源码分析--类加载器

Tomcat类加载器结构上图是Tomcat文档中所展示的Tomcat类加载结构。在这个结构中Bootstartap和System的类加载器由java虚拟机实现。common类加载器由Tomcat容器实现,它对 Tomcat 内部类和所有 Web 应用程序都是可见的。此类加载器搜索的位置$CATALINA_BASE/conf/catalina.prope…

Java概述

从项目到代码找工作前的整个学习体系(学会这些东西去解决问题,不单单去学这些东西)JavaSE知识图Java语言跨平台原理 Java语言特点完全面向对象:Java支持封装,继承,多态,面向对象编程,让程序更好的达到高内聚,低耦合的标准。 支持分布式: 健壮型:Java强类型机制,异常…

【Oracle partition by 实现字段去重】

1.利用开窗函数可以实现字段分组去重,其中要注意几点:需要外套查询语句,不然无法识别ROWNUM ,也就是 row_number 注意 分组排序方式,比如这里排序是 s_id 降序排列,以s_code 进行分组,如果有两行数据的 s_code 相同,那么rownum =1 的时候就 是只取第一组,即 s_id最大的…

Vulnhub | DC-4

信息搜集 通过mac地址找真实IP地址 真实IP为192.168.0.151,开放端口80,22 爆破密码 访问后是一个登录框,爆破尝试 admin/happy访问后是一个登录框,爆破尝试 admin/happy 命令执行 登陆后有一个命令执行选项,抓包修改参数可以执行任意命令 反弹shell失败了 找一找敏感文件 ca…

PowerShell教程 - 编程结构(Program Struct)- 第三部分

更新记录 转载请注明出处。 2022年8月21日 发布。 2022年8月18日 从笔记迁移到博客。预定义变量 预定义的布尔值 $True $False预定义变量 预定义变量 描述(Description) $^ 表示当前会话的使用过的最后一条命名的最前部分 $$ 表示当前会话的使用过的最后一…

压测工具 Locust

Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)一、认识Locust 定义 Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust…

#{}和${}的区别是什么

#{}和${}的区别是什么 动态 sql 是 MyBatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 MyBatis 会对其进行动态解析。MyBatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。 区别 1)#{}是预编译处理,$ {}是字符串替换。 2)MyBatis在处理#…

Mybatis组件介绍

核心组件 SqlSessionFactoryBuilder SqlSessionFactoryBuilder的作用就是通过XML或者Java代码来建造一个工厂(SqlSessionFactory),并且可以通过它建造多个这样的工厂。一旦完成建造工厂的任务,我们就应该废弃它,回收空间。所以它的生命周期只存在方法局部,完成工厂的建造即…

JAVA入门2022年8月19日

第一节 1.注释是什么写在程序中对程序进行解释说明的文字。 2.java中书写注释的方法有几种,各自有什么不同// 单行注释/* */ 多行注释/** */ 文档注释 3.注释有什么特点不进行编译,不影响程序的执行 4.注释的快捷键是怎么样的 第二节1.字面…

vue的生命周期

一、Vue 的生命周期 一、Vue 的生命周期流程图二、Vue 生命周期的具体    生命周期 描述beforeCreate 组件实例被创建之初created 组件实例已经完成创建beforeMount 组件挂载之前mounted 组件挂载到实例上去之后beforeUpdate 组件数据发生变化,更新之前updated 组件数据更新…

spring源码学习笔记1——解析xml生成BeanDefinition的过程解析

spring源码学习笔记1——解析xml生成BeanDefinition的过程解析 一丶Spring解析Xml生成BeanDefinition的流程 1.指定xml路径 解析xml首先需要知道xml的位置,如下我们构造了ApplicationContext ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml&…