首页 文章 精选 留言 我的

精选列表

搜索[流量结构],共10000篇文章
优秀的个人博客,低调大师

设计模式(九)适配器(结构型)

概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 角色 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(Adaptee):需要适配的类或适配者类。 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 类图 代码 水饺 package com.yydcdut; public class ShuiJiao { public void makeShuiJiao() { System.out.println("调制菜肉馅"); System.out.println("包面皮"); System.out.println("包饺子"); } } 混沌 package com.yydcdut; public interface HunDun { public void makeHunDun(); } 食品适配器 package com.yydcdut; public class FoodAdapter extends ShuiJiao implements HunDun { @Override public void makeHunDun() { super.makeShuiJiao(); System.out.println("混沌和水饺一样的是以面包馅的食品"); } } 测试 package com.yydcdut; public class Main { public static void main(String[] args) { HunDun h = new FoodAdapter(); h.makeHunDun(); } } 总结 优点 通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑。 复用了现存的类,解决了现存类和复用环境要求不一致的问题。 将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码。 一个对象适配器可以把多个不同的适配者类适配到同一个目标,也就是说,同一个适配器可以把适配者类和它的子类都适配到目标接口。 缺点 对于对象适配器来说,更换适配器的实现过程比较复杂。 适用场景 系统需要使用现有的类,而这些类的接口不符合系统的接口。 想要建立一个可以重用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。 两个类所做的事情相同或相似,但是具有不同接口的时候。 旧的系统开发的类已经实现了一些功能,但是客户端却只能以另外接口的形式访问,但我们不希望手动更改原有类的时候。 使用第三方组件,组件接口定义和自己定义的不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。 适配器模式与装饰者模式 它们都可以用来包装对象,本质区别在于 适配器模式:将一个接口转换成另外一个接口。 装饰者模式:不改变接口,只加入职责。 我是天王盖地虎的分割线 本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3897164.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册