Java类设计模式

1、单例模式

核心:保证一个类只有一个对象,并且提供一个访问该实例的全局访问点
五种单例模式:主要:饿汉式:线程安全,调用效率高,不能延时加载懒汉式:线程安全,调用效率低,可以延时加载其它:枚举单例:线程安全,调用效率高,不能延时加载(可以天然防止反射和反序列化漏洞)静态内部类式:线程安全,调用效率低,可以延时加载双重检索式
如何选择:占用资源少且不需要延时加载:枚举>饿汉占用资源多且需要延时加载:静态内部>懒汉

2、工厂模式

创建者与调用者分离
核心:实例化对象,甩工厂方法代替new操作
简单工厂模式(常用):不完全满足OPC原则
工厂方法模式:
抽象工厂模式:	

3、建造者模式

Builder构造	Director 装配

4、原型模式

实现Cloneable中来自object中的clone方法Object obj=(Object)Super.clone();return obj;
深克隆:Sheep s=(Sheep) obj;s.birthday=(Date)this.birthday.clone();
或者通过序列化和反序列化实现深复制

5、适配器模式(adapter)
6、代理模式(proxy pattern)

AOP(Aspect Oriented Programming)面向切面编程,其核心就是代理模式
核心角色:抽象角色(客户,定义代理角色和真实角色的公共对外方法)^                                ^代理角色(实现抽象角色)      ->         真实角色(实现抽象角色)

7、静态代理模式(客户-经纪人-演员)
8、动态代理模式
9、桥接模式

将多个维度的东西比如:电脑品牌与电脑类型分别来表示,然后通过参数形式将二者结合起来。
适用的场景:处理多层继承结构、处理多维度变化的场景、将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关系。

10、组合模式(component)

把部分与整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。

11、装饰模式(decorator)
动态的为一个对象增加新的功能
12、外观模式
迪米特法则(封装):
一个软件实体应当尽可能少的与其他实体发生相互作用。
13、享元模式(Fly weight)

如果有多个完全相同或者相似的对象,我们可以通过享元模式节省内存。
享元对象能够做到共享的关键是区分了内部状态和外部状态。
内部状态:可以共享,不会随着环境变化而改变
外部状态:不可以共享,会随着环境变化而改变

14、责任链模式(chain of responsibility)

将能够处理同一类请求的对象连成一条链,请求沿着链传递,如果能够处理就处理,处理不了就向后传递。

15、迭代器模式(iterator)

提供一种可以遍历聚合对象的方式
聚合对象:存储数据		
迭代器:遍历数据

16、中介者模式(mediator)

17、命令模式(commend)

将一个请求封装成对象,从而我们可以使用不同的请求对客户进行参数化。

18、策略模式(strategy)
19、模板方法模式(Template method)

定义好模板,核心内容用到再实现,模板中定义为抽象方法

20、状态模式(state)

不同状态对应不同行为,用于解决系统中复杂对象的状态转换以及不同状态下行为的封装。

21、观察者模式(observe)

广播,1:N的通知,当目标对象的状态发生改变时,他需要及时告知一系列观察者对象,令他们做出响应。
JAVASE提供了java.util.observable类和java.util.observer接口来实现观察者模式。

22、备忘录模式(memento)

保存某个对象内部状态的拷贝,以后就可以将该对象恢复到原先的状态。
源发器类:包括备份数据与恢复数据两种方法
备忘录类:通过构造器的方法来进行数据备份
负责人类:负责管理备忘录提供备忘录的get/set方法

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

《论文阅读》PECER:通过动态人格提取和情境情绪推理产生同理心反应 ICASSP 2024

《论文阅读》PECER:通过动态人格提取和情境情绪推理产生同理心反应 ICASSP 2024 前言简介任务定义模型架构Cognitive-Affective Personality PerceiverMulti-source EncoderInteractive Decoder损失函数实验结果可持续发展观点前言 亲身阅读感受分享,细节画图解释,再也不用…

C++中,如何使你设计的迭代器被标准算法库所支持。

iterator(读写迭代器) const_iterator(只读迭代器) reverse_iterator(反向读写迭代器) const_reverse_iterator(反向只读迭代器) 以经常介绍的_DList类为例,它的迭代…

ControlGAN:Controllable Text-to-Image Generation

1 研究目的 当前的生成网络通常是不可控的,这意味着如果用户更改句子的某些单词,合成图像将与原始文本生成的合成图像显着不同;当给定的文本描述(例如颜色)发生变化时,鸟类的相应视觉属性被修改&#xff0c…

大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓

文章目录 基于FlinkHologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓​编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业OD…

fpga系列 硬件(时序收敛):触发器建立时间(setuptime)

触发器 电平触发、边沿触发和脉冲触发是三种主要的触发形式。always (posedge clk or negedge rst_n) 是一个典型的 Verilog 语句,用于定义一个带复位的触发器。D触发器是一种基本的数字存储元件,主要用于数据存储和时序控制。 D触发器的建立时间和保持…

华为-IPv6与IPv4网络互通的6to4自动隧道配置实验

IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…

躺平成长:微信小程序运营日记第二天

在进行属于生活的开源之后,自己更加感受到自己存在的渺茫,同时更加开始深刻领会,开源的重要性,在开源,开放,创造,再创新的思维模式下,不发布八部金刚功相关的训练视频,自…

Typora---进度条(1)

本系列专门介绍关于typora中用到的小玩意。(哈哈哈哈哈哈) 本帖子讲述关于 进度条 的事情。 在typora中通过下面的语句可以显示出一个进度条: ![95% done](https://markdone.org/progress//95.png)通过更改上面语句中的数字可以展示不同的进…

中英翻译神器!轻松搞定跨文化沟通

大家好!今天咱们来聊聊那些你生活中不可或缺的翻译小助手;不论你是个英语小白,还是希望更快地了解外国文献、掌握外媒信息,或者是从事需要大量翻译工作的小伙伴,总有一款翻译工具能帮你省时省力,让你的生活…

Total_Expectation_Conditional_Bias_Variance_Tradeoff

Statistics with Prof. Liang Liu Topics: Total expectation, consitional expectation, conditional probability, marginal probability, 模型的 Bias, Variance 我们碰到的绝大多数都是 conditional 的probability 。比如,given miu, sigma square, 才能讨论…

【Java基础】Java面试基础知识QA(上)

Java面试基础知识Q&A(上) 面向对象编程( OOP) Java 是一个支持并发、基于类和面向对象的计算机编程语言。面向对象软件开发的优点: 代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性…

【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯打造个人IP爆款文案提示词使用方法 💯CSDN爆款技术文案提示词使用方法 💯高效教案设计提示词使用方法 💯小结 💯前言 在这…

【无人机设计与技术】自抗扰控制(ADRC)的建模与仿真研究

摘要 本文针对四旋翼无人机姿态控制系统进行了基于自抗扰控制(ADRC)的建模与仿真研究。通过MATLAB/Simulink仿真平台,实现了无人机的姿态控制模型,并采用自抗扰控制器(ADRC)对无人机的姿态进行控制。本文详细介绍了自抗扰控制器的设计方法和应用&#x…

力扣题解 983

大家好,欢迎来到无限大的判断,祝大家国庆假期愉快 题目描述(中等) 最低票价 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出…

餐饮重点企业在AI领域的布局,看方大的AI实践

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…

叶绿素透射反射率与波长

本文在分析巢湖水体反射光谱特征的基础上,通过对光谱反射率与叶绿素a 的浓度之间的关系进行分析研究,结果表明,单波段光谱反射率与叶绿素a浓度的相关系数较小,不宜用于估算叶绿素a浓度.光谱反射率比值RFo5.m/Rss.nm.和 690nm反射率的一阶微分均与叶绿素a浓度有较好的…

Chromium 用户数据目录User Data 初始化过程c++

一、先说结论 User Data 路径优先级如下: 1、注册表中策略配置的路径。 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium UserDataDir"xx_path" 2、命令行中的路径。 --user-data-dir"xx_path" 3、默认用户路径 %LOCALAPPDATA%/Chrom…

buuctf---->[WUSTCTF2020]level3

做题笔记。 无语。 下载 查壳。 64ida打开。 先运行一下程序: 用它这个程序 加密romantic >>> cm9tYW50aWH 我们去正常加密看看: 仔细对比你会发现点毛病。 看看ida: 这表看起来,很正常,默认的为什么会加密不…

Python批量下载PPT模块并实现自动解压

日常工作中,我们总是找不到合适的PPT模板而烦恼。即使有免费的网站可以下载,但是一个一个地去下载,然后再批量解压进行查看也非常的麻烦,有没有更好方法呢? 今天,我们利用Python来爬取一个网站上的PPT&…

Java学习-网络编程

目录 1. 网络通信基本概念 1.1 通信 1.2 网络 1.3 协议 1.4 网络通信 1.5 网络通信协议 1.6 TCP/IP协议 1.7 互联网 1.8 计算机网络 2. TCP与UDP协议 2.1 TCP 2.2 UDP 2.3 TCP的三次握手 2.4 为什么要三次握手 2.5 TCP四次挥手 2.6 为什么要四次挥手 3. HTTP1…