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

一句话描述设计模式

最近在看设计模式,其描述抽象程度令人欲罢不能,始终不得其意。于是尝试用一句话总结了一下,常规的就不说了,只是举了个例子。

单例模式

  1. Spring中的单例bean使用了双重锁机制

工厂模式

  1. Spring中的BeanFactory是简单工厂模式
  2. BeanFactory是工厂方法模式(工厂父类,工厂子类,公共接口)

原型模式

**它通过复制一个已有的实例(即原型对象)来创建一个和原型对象相同的新对象。**‌ 当创建对象的过程比较复杂时,使用该模式快速创建对象。

实现方式:

  1. 浅克隆:实现Cloneable 接口,
  2. 深克隆:实现serializable 接口

建造者模式

将对象的构建和表示分离,分步骤创建复杂对象,同样的过程可以创建不同的对象。

  1. StringBuilerStringBuffer
  2. Mybatis中的SqlSessionFactoryBuilder

桥接模式

桥接模式就像是把一个大玩具拆成两部分:

  1. 形状部分:比如车子、船或飞机的样子。
  2. 颜色部分:比如红色、蓝色或绿色。

这样做的好处是,我们可以随意组合不同的形状和颜色,而不用为每种组合都做一个全新的玩具。这让制作玩具变得更简单,也让我们可以轻松创造出更多种类的玩具。

这种方法帮助程序员更容易写出灵活的程序,就像我们可以轻松制作各种不同的玩具一样。

组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。

组合模式就像是一个树形积木游戏。

想象一下,你有很多积木,可以把它们组合在一起。你可以把小积木连接成一个大积木,然后再把这个大积木和其他积木连接,形成更大的结构。

这种模式让你可以用同样的方式对待单个积木和由多个积木组成的大结构。不管是一个积木还是一堆积木,你都可以移动它,数它,或者对它做其他操作。

这样做的好处是,你可以轻松地创建复杂的结构,同时还能简单地处理它们,就像处理单个积木一样容易。

享元模式:通过共享所有对象的相同状态,减少单个对象的大小。

代理模式:在不改变原对象的前提下,控制对该对象的访问,允许在前后进行处理。

装饰器模式:在不改变原对象的前提下,增加新的功能。

外观模式:给复杂的对象提供一个简单的操作接口,用户只需要关注功能而不需要关注具体实现。

责任链模式:行为设计模式,将请求沿着处理器链进行发送,每个处理器可以处理也可以不处理。filterCharin.

命令模式:将请求转换为包含与请求所有相关信息的独立对象。相当于购物清单。

迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。

中介者模式:减少对象之间的直接访问,对象和中介者交互,然后事情由中介者负责处理。

备忘录模式:在不暴露对象实现细节的情况下,保存和恢复之前的状态。

观察者模式:可在对象事件发生时通知多个 “观察” 该对象的其他对象。类似于新闻发布会。

状态模式:当对象状态发生改变时,改变其行为。类似于自动机

策略模式:完成某个行为的多种方式,可以互相替换。地图导航中的步行、驾车、公共交通。

模版方法模式:父类中定义算法框架,子类在不修改框架的基础上重写特定细节。AQS

访问者模式:分离算法和数据结构,对同样的东西做不同的事。例如messageConverter,将消息转换成不同格式。


http://www.kler.cn/news/307039.html

相关文章:

  • 深入分析计算机网络性能指标
  • 无人机培训机构组装调试技术详解
  • 【我的 PWN 学习手札】Fastbin Double Free
  • 【系统分析师】-安全体系
  • 鸿蒙轻内核A核源码分析系列七 进程管理 (2)
  • 华为OD机试真题E卷-计算网络信号(含题目描述+解题思路+代码解析)
  • 记录一下gitlab社区版的安装教程
  • 通过TensorBoard查看服务器训练过程
  • 【LeetCode】每日一题 2024_9_15 与车相交的点(差分)
  • C语言编译原理
  • Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪
  • 红外成像人员检测数据集
  • 基于C#+Mysql实现(界面)企业的设备管理系统
  • leetcode18-27
  • 谷歌在在线展示广告技术上的垄断,Meta无法有效竞争
  • 【机器学习】8 ——朴素贝叶斯
  • C++ primer chapter 12
  • 中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测
  • Rabbitmq中得RPC调用代码详解
  • MySQL学习(视图总结)
  • idea集成和使用Git指南
  • uni-app 应用名称 跟随系统语言 改变
  • 沉浸式体验和评测Meta最新超级大语言模型405B
  • 【南方科技大学】CS315 Computer Security 【Lab2 Buffer Overflow】
  • JAVA基础面试题总结(十五)——设计模式
  • USB摄像头视频流转RTSP流
  • 算法题解:斐波那契数列(C语言)
  • OpenAI / GPT-4o:Python 返回结构化 / JSON 输出
  • PyTorch----模型运维与实战
  • C/C++内存管理——内存泄漏/内存碎片