Java中的适配器设计模式

适配器设计模式是一种结构设计模式 ,可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码。

适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比。

在设计面向对象的应用程序时,当我们的客户希望使用特定类型的对象并且我们有一个第三方API提供相同的功能但通过不兼容的接口时,我们可能会感到需要适配器

它也被称为包装器,因为它通过一个新接口包装现有代码,使其与客户端兼容。

术语:

让我们知道在谈论适配器模式时使用的术语:

  • 客户端:要使用第三方库或外部系统的类
  • Adaptee:我们要使用的第三方库或外部系统中的类
  • 目标接口:客户端将使用的所需接口
  • 适配器:此类位于客户端和适配器之间,并实现目标接口

使用适配器模式:

假设我们有一个ShopInventory ,其中维护着一个产品列表。 后来,我们接管了另一家出售杂货的商店库存。 现在,我们要将这些项目添加到ShopInventory中 。 我们这里存在的问题是,尽管GroceryItem只是一种产品,但与Product接口无关。

为了解决这个问题,我们将使用适配器模式。 我们将创建一个GroceryItemAdapter ,它将实现Product接口:

借助适配器,我们现在可以将GroceryItem视为产品,而无需更改第三方代码( GroceryItem )中的任何内容。

Java实现:

首先定义一个Product和一个ShopInventory类:

public interface Product {String getName();double getPrice(); 
}public class ShopInventory {private List<Product> products;public ShopInventory() {this.products = new ArrayList<>();}public void addProduct(Product product) {this.products.add(product);}public void removeProduct(Product product) {this.products.remove(product);}
}

我们刚刚接管的第三方商店拥有GroceryItem

//third-party code
public class GroceryItem {String itemName;int costPerUnit;//constructor, getters and setters
}

由于我们的ShopInventory只保存Product类型的项目,因此我们为新引入的GroceryItem创建一个适配器:

public class GroceryItemAdapter implements Product {private GroceryItem groceryItem;public GroceryItemAdapter(GroceryItem groceryItem) {this.groceryItem = groceryItem;}public String getName() {return groceryItem.getItemName();}public double getPrice() {return groceryItem.getCostPerUnit();    }
}

这样,我们现在可以将我们的常规产品和杂货添加到我们的ShopInventory中:

//code in our main method
ShopInventory inventory = new ShopInventory();//adding regular store products - ones that implement Product interface
inventory.addProduct(new CosmeticProduct("Lavie Handbag", 5000.0));
inventory.addProduct(new FitnessProduct("Yoga SmartFit", 2000.75));//adding GroceryItem to the store using an adapter
GroceryItem groceryItem = new GroceryItem("Wheat Flour", 100);
inventory.addProduct(new GroceryItemAdapter(groceryItem));

结论:

适配器模式可帮助我们连接两个不兼容的接口,以显示相同的业务功能。

使用适配器模式,我们将现有接口转换为客户端代码期望的另一个接口。

翻译自: https://www.javacodegeeks.com/2019/08/adapter-design-pattern-in-java.html

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

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

相关文章

光纤收发器双模和单模有什么区别?如何区分单模、双模光纤收发器?

光纤收发器是一种将短距离的电信号和长距离的光信号进行传输转换的媒介&#xff0c;由于有些网络环境下短距离的电信号无法覆盖&#xff0c;必须用光纤来延长传输距离&#xff0c;而将铜线升级为光纤的成本又太大&#xff0c;所以光纤收发器的应用越来越广泛。 收发器有单模和…

[渝粤教育] 宁波工程学院 微积分I 参考 资料

教育 -微积分I-章节资料考试资料-宁波工程学院【】 第一周测验(1) 1、【单选题】<img src"http://nos.netease.com/edu-image/9DB250144BA69D695AB03C664C815B3A.jpg?imageView A、 B、 C、 D、 参考资料【 】 2、【单选题】 A、 B、 C、 D、 参考资料【 】 3、【单选…

光纤收发器通过无线路由器如何安装?

光纤收发器一般都是成对使用的&#xff0c;比如运营商&#xff08;电信、移动、联通&#xff09;的光纤收发器发射&#xff0c;用户家里的光纤收发器进行接收。不管怎样&#xff0c;光纤收发器都是成对使用的。那么&#xff0c;如何通过无线路由器安装光纤收发器&#xff1f;接…

光纤收发器性能级别及价格介绍

光纤收发器的使用原理都是一样的&#xff0c;但根据不同的布线技术、温度、湿度、抗雷性等环境要求&#xff0c;光纤收发器基本可以分成三种级别工业级、电信级和普通网络级。接下来&#xff0c;就由飞畅科技来为大家详细介绍下光纤收发器的性能级别及价格&#xff0c;感兴趣的…

JDK 13:VM.events已添加到jcmd

CSR&#xff08; 兼容性和规范审查 &#xff09; JDK-8224601 [“提供VM.events诊断命令”]从JDK 13 Early Access Build &#xff03;24 &#xff08;日期为2019/6/6 &#xff09;开始在JDK 13中实现&#xff0c;并通过增强功能JDK- 8224600 [“提供VM.events命令”]。 CSR的“…

光纤收发器选购原则

众所周知&#xff0c;我们在实际采购光纤收发器当中&#xff0c;价格跟性能是一个很重要的衡量因素&#xff0c;特别是一些中小型企业。我们一般认为&#xff0c;几百元的产品足以能够满足一般的企业的需求了&#xff0c;除非是一些特殊的行业&#xff0c;例如电信、军事等。当…

[渝粤教育] 武汉理工大学 测试技术 参考 资料

教育 -测试技术-章节资料考试资料-武汉理工大学【】 第1章 测验 1、【单选题】测试技术的发展趋势&#xff1a; 、 、 、 。 A、智能化、集成化、高灵敏化、数字化 B、智能化、集成化、微小化、数字化 C、集成化、高灵敏化、微小化、数字化 D、智能化、高灵敏化、微小化、数字化…

光纤收发器产品的光电介质转换芯片选择性能指标介绍

在以太网光纤收发器设计中&#xff0c;元器件的选择举足轻重&#xff0c;它决定了产品的性能、寿命和成本。光电介质转换芯片&#xff08;OEMC&#xff09;是整个收发器的核心。选择介质转换芯片是以太网光纤收发器设计的第一步&#xff0c;也是非常重要的一步&#xff0c;它的…

光纤收发器不同品牌之间的兼容性互通

目前市面上的光纤收发器品牌跟厂家是愈来愈多&#xff0c;光纤收发器厂家和品牌大部分方案是百兆RTL8306E&#xff0c;IP113C&#xff0c;千兆高通8334&#xff0c;Marvell6122&#xff0c;这几个方案之间的兼容性都不错&#xff0c;可实现互联互通&#xff0c;传输稳定&#x…

[渝粤教育] 沈阳工业大学 模拟电子技术 参考 资料

教育 -模拟电子技术-章节资料考试资料-沈阳工业大学【】 第一周作业 第一周单元测验 1、【单选题】在本征半导体中加入&#xff08; &#xff09;元素可形成N型半导体。 A、五价 B、四价 C、三价 D、二价 参考资料【 】 2、【单选题】PN结加正向电压时&#xff0c;空间电荷区将…

[渝粤教育] 深圳信息职业技术学院 《新理念英语》English For You 参考 资料

教育 -《新理念英语》English For You-章节资料考试资料-深圳信息职业技术学院【】 Which is true about the introduction? 1、【多选题】Which of the following is true about the introduction? (多选) A、The employers we talked to told us that they valued employee…

光纤收发器在高清网络视频监控工程项目中的应用

光纤收发器是一种将以太网的电信号和光信号进行互换的以太网传输媒质转换设备&#xff0c;也被称之为光电转换器。而在网络上传输数据的光纤分为多模光纤和单模光纤。接下来我们就来看下什么是单模光纤收发器&#xff0c;什么是多模光纤收发器&#xff0c;了解下光纤收发器在高…

[渝粤教育] 盐城师范学院 高等代数 参考 资料

教育 -高等代数-章节资料考试资料-盐城师范学院【】 5.1练习 1、【单选题】 A、 B、 C、 D、以上都不对 参考资料【 】 2、【单选题】 A、 B、 C、 D、 参考资料【 】 3、【单选题】 A、 B、 C、 D、 参考资料【 】 4、【单选题】设有矩阵A&#xff0c;与其合同的是 A、 B、 C、…

Java中的策略设计模式

策略设计模式是一种行为模式&#xff0c;其中我们有多种算法/策略来完成一项任务&#xff0c;所使用的算法/策略留给客户选择。 各种算法选项封装在单独的类中。 在本教程中&#xff0c;我们将学习在Java中实现策略设计模式。 UML表示形式&#xff1a; 首先&#xff0c;我们来…

光纤收发器怎么连?光纤收发器连接图解!

光纤收发器可以实现光信号和电信号的转换&#xff0c;通过光纤进行信号的转换&#xff0c;最后和一些设备连接&#xff0c;让你的传输通信畅通无阻。当我们远距离传输时&#xff0c;通常会使用光纤来传输。因为光纤的传输距离很远&#xff0c;一般来说单模光纤的传输距离在10千…

[渝粤教育] 莆田学院 电机与拖动基础(一) 参考 资料

教育 -电机与拖动基础&#xff08;一&#xff09;-章节资料考试资料-莆田学院【】 绪论节测试 1、【单选题】电机的基本原理就是基于&#xff08; &#xff09;&#xff0c;实现机电能量转换。 A、牛顿三大定律 B、电磁感应 C、质量守恒 D、洛伦兹力定律 参考资料【 】 2、【单…

光纤收发器的六个指示灯代表是什么意思?

对光纤收发器这块了解的朋友应该知道&#xff0c;光纤收发器有6个LED指示灯&#xff0c;它们分别显示了收发器的工作状态&#xff0c;根据LED所示&#xff0c;我们就能判断出收发器是否工作正常和可能有什么问题&#xff0c;从而能帮助找出故障。那么&#xff0c;光纤收发器的六…

[渝粤教育] 西北工业大学 模拟电子技术基础 参考 资料

教育 -模拟电子技术基础-章节资料考试资料-西北工业大学【】 常用半导体器件原理 1、【单选题】N型半导体是在纯净半导体中掺入____&#xff1b; A、带正电的离子 B、三价元素&#xff0c;如硼等 C、五价元素&#xff0c;如磷等 D、带负电的电子 参考资料【 】 2、【单选题】用…

光纤收发器注意事项

光纤收发器的产品种类有很多种&#xff0c;每一种所对应的的端口&#xff0c;光纤接头也是有所不同的&#xff0c;我们在实际实际使用中大多注意的是按光纤接头不同而区分的类别&#xff1a;SC接头光纤收发器和FC/ST接头光纤收发器。那么&#xff0c;我们平时在使用光纤收发器的…

activemq网络桥接_ActiveMQ –经纪人网络解释

activemq网络桥接目的 这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息。 为什么要建立经纪人网络&#xff1f; ActiveMQ消息代理是企业中消息传递基础结构的核心组件。 它需要高度可用并且可以动态伸缩&#xff0c;以促进具有不…