Java 设计者模式以及与Spring关系(三) 原型和适配器模式

简介:

本文是个系列一次会出两个设计者模式作用,如果有关联就三个,除此外还会讲解在spring中作用。

23设计者模式以及重点模式

我们都知道设计者模式323种设计模式,标红是特别重要的设计者模式建议都会,而且熟读于心,标蓝是指其次重要建议也要明白。

(1)创建型模式:单例模式抽象工厂模式构建者模式工厂模式原型模式

(2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式

(3)行为型模式:访问者模式、模版方法模式命令模式、迭代器模式观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式。

原型模式(Prototype):

原型模式是一种创建型设计模式,它允许对象在创建时复制现有对象(称为原型),而不是通过实例化新对象。这对于创建成本高的对象特别有用。

如何使用:
  1. 实现 Cloneable 接口:Java 提供了 Cloneable 接口,用于指示一个类的实例可以被克隆。
  2. 重写 clone 方法:在类中重写 Object 类的 clone 方法,用于创建对象副本。
public class Prototype implements Cloneable {private String field;public Prototype(String field) {this.field = field;}@Overridepublic Prototype clone() throws CloneNotSupportedException {return (Prototype) super.clone();}
}

Spring 中的应用:

在 Spring 中,原型模式的一个应用是在定义 bean 作用域时。当一个 bean 的作用域被定义为 prototype 时,每次通过 Spring 容器请求这个 bean 时,都会创建一个新的实例,而不是复用相同的实例。

适配器模式(Adapter)

  • 目的:允许接口不兼容的对象能够相互合作。
  • 使用场景:整合第三方库、API,或是老系统的代码。

适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行交互。通过创建一个中间层(适配器),使得原本由于接口不兼容而不能一起工作的类可以协同工作。

// 目标接口
public interface TargetInterface {void targetMethod();
}// 被适配的类
public class Adaptee {public void specificMethod() {System.out.println("Specific method of Adaptee is called.");}
}// 适配器类
public class Adapter implements TargetInterface {private Adaptee adaptee;public Adapter(Adaptee adaptee) {this.adaptee = adaptee;}@Overridepublic void targetMethod() {adaptee.specificMethod();}
}

Spring框架的使用

看以上应用,就像@Autowired注入到本地使用其他实现类一样。Spring 中的许多模块使用适配器模式来确保跨不同模块的兼容性,例如 Spring MVC 中,将不同框架的 Controller 适配为 Spring 框架能理解的形式。

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!作者在这拜谢了!

如果你需要Java 、Python毕设、网页和系统设计,还有你是刚入职的新手需要度过试用期。联系方式微信:Romanticl99 网名:A乐神

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

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

相关文章

数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)二

第五部分、数组和广义表详解 数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵…

探秘网络爬虫的基本原理与实例应用

1. 基本原理 网络爬虫是一种用于自动化获取互联网信息的程序,其基本原理包括URL获取、HTTP请求、HTML解析、数据提取和数据存储等步骤。 URL获取: 确定需要访问的目标网页,通过人工指定、站点地图或之前的抓取结果获取URL。 HTTP请求&#…

行政快递管理软件使用教程

勤勤恳恳的行政人员,还在努力地修改企业快递管理制度,而聪明的行政人员,已经开始物色合适的快递管理软件了。随着企业管理的现代化发展,我们会发现很多管理模块都有相应的管理制度。人力资源管理、客户关系管理、财务管理等等&…

【LeetCode: 295. 数据流的中位数 + 堆】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Python中如何简化if...else...语句

一、引言 我们通常在Python中采用if...else..语句对结果进行判断,根据条件来返回不同的结果,如下面的例子。这段代码是一个简单的Python代码片段,让用户输入姓名并将其赋值给变量user_input。我们能不能把这几行代码进行简化,优化…

beego API 自动化文档

API 全局设置 必须设置在 routers/router.go 中,文件的注释,最顶部: // APIVersion 1.0.0 // Title mobile API // Description mobile has every tool to get any job done, so codename for the new mobile APIs. // Contact astaxiegmai…

LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略

LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具底层基于RAG)的简介、安装、使用方法之详细攻略 目录 Vanna的简介 1、用户界面 2、RAG vs. Fine-Tuning 3、为什么选择Vanna? 4、扩展Vanna Vanna的安装和使用方法 1、安装 2、训练 (1)、使用…

Transformer|对图像数据构造patch序列+VIT整体架构解读(需进一步完善)

Attention在视觉的作用 使其关注到所值得关注的。 ViT(Vision transformer) 比如说图像是一个30x30x3的大小,可以将其拆分成9个10x10x3的部分,每个部分可以继续将10x10x3的部分拆解成300x1的向量来代表自己。(通常情…

单元测试之Stub和Mock

实例 Analyze类会检查filename的长度,如果小于8,我们就会使用一个实现IWebService的类来记录错误. 我们需要给Analyze方法写单元测试。 public class LogAnalyzer {private IWebService service;private IEmailService email;public IWebService Serv…

C++类与对象【运算符重载】

🌈个人主页:godspeed_lucip 🔥 系列专栏:C从基础到进阶 🎄1 运算符重载🌽1.1 加号运算符重载🌽1.2 左移运算符重载🌽1.3 递增运算符重载🌽1.4 赋值运算符重载&#x1f33…

信道复用技术码分复用 CDM(Code Division Multiplexing)

目录 一、码分复用 CDM(Code Division Multiplexing) 二、码分多址CDMA 三、码片序列的概念 四、码片序列的正交关系 五、CDMA的工作原理 一、码分复用 CDM(Code Division Multiplexing) 常用的名词是码分多址 CDMA (Code Di…

Linux 内核被冬季风暴 “封印“

Linus Torvalds在内核邮件列表上宣布,由于他所在的美国俄勒冈州波特兰地区受到严重冬季风暴的影响,导致网络和电力中断。波特兰及其周边地区气温急降至零下 -10C,因此他不得不临时中断对Linux 6.8内核的合并窗口操作。 Linus于1月7日发布了Li…