java 设计模式 深入理解

在学习设计模式的时候,以前学习了下总以为理解了,但是在实际工作中基本上用不起来。在学习拆书后,想到用讲的方式去学习和思考的时候,要想讲清楚,就要深入理解其中的原理。在重新整理和写下来的过程中,感觉基本上是掌握了,在工作中遇到的时候,也慢慢也去考虑了。教是最好的学。在整理写的时候,也会有不同的思考,理解也会更深

创建型 

   抽象工厂模式 :  提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类。


   工厂方法模式 : 定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。


    建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。


    原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。


    单例模式 : 保证一个类仅有一个实例,并提供一个访问它的全局问点。

结构型

    适配器模式  : 将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。


    桥接模式 : 将抽象部分与它的实现部分分离,使它们都可以独立地变化。


    组合模式 : 将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。


    外观模式 : 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。


    装饰者模式 : 动态得给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。


    享元模式 : 为运用共享技术有效地支持大量细粒度的对象。


    代理模式  : 为其它对象提供一种代理以控制对这个对象的访问。

行为型

    责任链模式 : 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。


    命令模式 : 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化: 可以对请求排队或记录请求日志,以及支持可撤销的操作。


    解释器模式 : 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示类解释语言中的句子。


    迭代模式 : 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。


    中介者模式 : 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。


    备忘录模式 : 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后可以将该对象恢复到原先保存的状态。


    观察者模式 : 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。


    状态模式  : 允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。


    策略模式 : 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互转换。策略模式使得算法可以独立于使用它的客户而变化。


    模板方法模式 : 定义一个操作的算法框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。


    访问者模式 : 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

其它模式

先整理目前写的,后面陆陆续续再添加修改和完善。

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

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

相关文章

蓝桥杯刷题--python-28-并查集

528. 奶酪 - AcWing题库 T=int(input()) def union(p,i,j): p1=parent(p,i) p2=parent(p,j) p[p1]=p2 def parent(p,i): root=i while p[root]!=root: root=p[root] while p[i]!=i: x=i;i=p[i];p[x]=root return root class Node:…

存储器的层次结构和局部性原理

前言 大家好我是jiantaoyab,这是我所总结作为学习的笔记第19篇,在这里分享给大家,这篇文章讲存储器的一部分内容。 存储器的层次结构 SRAM 静态随机存取存储器的芯片,SRAM 之所以被称为“静态”存储器,是因为只要处…

设计模式 之 策略模式

策略模式是一种定义一系列算法的方法,以相同的方式调用不同的算法,减少了各种算法类与使用算法类之间的耦合。 它的重心不是如何实现算法,而是如何组织,调用这些算法。从而让程序结构更灵活,具有更好的维护性和扩展性…

用Springboot(java程序)访问Salesforce RestAPI

本文讲一下,如何从0构建一个Springboot的应用程序,并且和Salesforce系统集成,取得Salesforce里面的数据。 一、先在Salesforce上构建一个ConnectApp。 有了这个,SF才允许你和它集成。手顺如下: 保存后,…

云计算系统管理(ADMIN)

01. 公司需要将/opt/bjcat3目录下的所有文档打包备份,如何实现? 答案: # tar -czf /tmp/bjcat3.tar.gz /opt/bjcat302. 简述创建crontab计划任务的流程 答案: 利用crontab –e -u 用户名 进入计划任务编辑模式 分 时 日 月 周 …

揭秘.dataru勒索病毒,远离数据被锁的威胁

导言: 在网络安全领域,勒索病毒已成为一个日益严重的威胁。其中,.dataru勒索病毒以其独特的加密技术和狡猾的传播方式,让许多企业和个人遭受了巨大的损失。本文将深入剖析.dataru勒索病毒的特点、传播方式,并提出有效…

Android kotlin全局悬浮窗全屏功能和锁屏页面全屏悬浮窗功能二

1.前言 在进行app应用开发中,在实现某些功能中要求实现悬浮窗功能,分为应用内悬浮窗 ,全局悬浮窗和 锁屏页面悬浮窗功能 等,接下来就来实现这些悬浮窗全屏功能,首选看下第二部分功能实现 2.kotlin实现锁屏页面悬浮窗全屏功能二分析 悬浮窗是属于Android系统的一种浮动窗…

dddssss

import cv2 from cvzone.PoseModule import PoseDetectorif __name__ __main__:# cap cv2.VideoCapture(2.mp4)cap cv2.VideoCapture(0)detector PoseDetector()posList []while True:success, img cap.read()img detector.findPose(img)# 获取33个点的每一帧放到lmList…

web渗透测试漏洞流程:目标域名CDN绕过

1.2.1 判断域名是否存在CDN 首先,要验证一个域名是否正在使用CDN服务,我们可以借助在线工具如ChinaZ的Ping服务(http://ping.chinaz.com/)来进行测试。当通过该工具查询到的IP地址不止一个时,这通常意味着显示的IP列表并非直接指向实际服务器的唯一真实IP。比如,若结果显…

jenkins配置源码管理的git地址时,怎么使用不了 credential凭证信息

前提 Jenkins使用docker部署 问题 (在jenlins中设置凭证的方式)在Jenkins的任务重配置Git地址,并且设置了git凭证,但是验证不通过,报错; 无法连接仓库:Command "git ls-remote -h -- http://192.1XX.0.98:X02/…

Compose UI 之 Checkbox 复选框 RadioButton 单选框

Checkbox 复选框 & RadioButton 单选框 Checkbox 复选框提供了在多个选项中选择一个或多个选项的作用。 RadioButton 单选框提供了在多个选项中只能选择一个选项的作用。 下面就分别来介绍下 Android Compose UI 库中的 Checkbox 复选框 和 RadioButton 单选框。 Radio…

C语言中的运算符优先级详解与使用示例

以下是C语言中运算符优先级的,以及对每个运算符的详细解释: 优先级运算符类别运算符描述1后缀() 函数调用 ( 数组下标 )函数调用、数组元素访问. 结构体成员访问 -> 结构体指针成员访问访问结构体的成员 后缀自增 -- 后缀自减自增或自减操作&#xf…

模拟实现字符串库函数(一)

在C语言的标准库中提供了很多针对字符串的库函数,这篇文章我们会学习并模拟实现几个简单的库函数 求字符串长度函数strlen strlen函数我们在之前已经用过很多次了,同时也模拟实现过,但是都不是模仿标准库中的strlen来实现,首先我…

IOS苹果开发者账号封号的规避心得,利用好防关联工具避免APP下架问题

大家好我是咕噜美乐蒂,很高兴又和大家见面了! 当涉及到避免 iOS 苹果开发者账号封号以及利用防关联工具来规避应用下架问题时,有一些具体的操作和注意事项可以帮助你更好地管理你的开发者账号和应用。 避免账号封号的规避心得: …

编程界的万能钥匙:揭秘程序员常用的超实用算法!

程序员常用的算法 引言一、排序算法:为数据秩序井然二、搜索算法:高效定位数据三、图算法:理解复杂网络结构四、动态规划:优化递归求解过程五、贪心算法:简单高效的局部最优解六、数据结构相关算法:必不可少…

2024-03-24 思考-MBTI-简要记录

摘要: 2024-03-24 思考-MBTI-简要记录 MBTI16型人格: MBTI16型人格在人格研究和评价中得到了广泛的应用。MBTI是一种基于瑞士心理学家荣格在理论基础上发展起来的人格分类工具。为了准确判断个人的心态偏好,将每个人分为16种不同的人格类型。这种分类方法不仅为我们…

Red and Black (DFS BFS)

//新生训练 #include <iostream> #include <algorithm> #include <bits/stdc.h> using namespace std; int a, b, sum; char c[20][20]; void dfs(int x, int y) {c[x][y] #;if (x - 1 > 0 && c[x - 1][y] .){sum;dfs(x - 1, y);}if (x 1 <…

vue2 脚手架

安装 文档&#xff1a;https://cli.vuejs.org/zh/ 第一步&#xff1a;全局安装&#xff08;仅第一次执行&#xff09; npm install -g vue/cli 或 yarn global add vue/cli 备注&#xff1a;如果出现下载缓慢&#xff1a;请配置npm 淘宝镜像&#xff1a; npm config set regis…

使用 STL 容器发生异常的常见原因分析与总结

目录 1、概述 2、使用STL列表中的元素越界 3、遍历STL列表删除元素时对迭代器自加处理有问题引发越界 4、更隐蔽的遍历STL列表删除元素时引发越界的场景 5、多线程同时操作STL列表时没有加锁导致冲突 6、对包含STL列表对象的结构体进行memset操作导致STL列表对象内存出异…

python之(19)CPU性能分析常见工具

Python之(19)CPU性能分析常见工具 Author: Once Day Date: 2024年3月24日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏:Python开发_Once-Day的博客…