JAVA 设计模式 适配器模式

用途

适配器模式 (Adapter)

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

适配器模式是一种结构型模式

结构

图-适配器模式结构图

Target : 定义用户实际需要的接口

abstract class Target {
 public abstract void Request();
 }

Adaptee : 定义一个需要适配的接口

class Adaptee {
 public void SpecificRequest() {
         System.out.println("特殊请求");
     }
 }

Adapter : 通过在内部包装一个 Adaptee 对象,把源接口转换成目标接口。

class Adapter extends Target {
 private Adaptee adaptee = new Adaptee();
 
     @Override
 public void Request() {
         adaptee.SpecificRequest();
     }
 }

测试代码

public class AdapterPattern {
 public static void main(String[] args) {
         Target target = new Adapter();
         target.Request();
     }
 }

运行结果

特殊请求

应用场景

想要使用一个已经存在的类,但如果它的方法不满足需求时;

两个类的职责相同或相似,但是具有不同的接口时要使用它;

应该在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。

推荐

本文属于 JAVA设计模式系列

参考资料

《大话设计模式》《HeadFirst设计模式》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏栗霖积跬步之旅

一天一个设计模式:适配器模式

适配器模式是把一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

543
来自专栏Java进阶架构师

解密Dubbo:自己动手编写一个较为完善的RPC框架(两万字干货)

现在很多企业都在使用Dubbo或者Spring Cloud做企业的微服务架构,其实对于Dubbo最核心的技术就是RPC调用,现在我们就来动手自己编写一个RPC框...

874
来自专栏大闲人柴毛毛

三句话搞定适配器模式

适配器模式的官方定义: 将一个与当前类无法兼容的接口转换成能够兼容当前类的接口。 适配器模式的大白话: 现在有一个第三方类/我们项目组中别人写的类放在我们面前,...

3296
来自专栏程序之美

spring bean的作用域

Bean的作用域 参考:spring FrameWork官方文档 spring4.x中官方有7中作用域,如果使用的是applicationContext作为...

882
来自专栏技术墨客

Spring核心——Bean的定义与控制 原

在前面两篇介绍Sring核心与设计模式的文章中,分别介绍了Ioc容器和Bean的依赖关系。如果阅读过前2文就会知道,Spring的整个运转机制就是围绕着IoC容...

672
来自专栏haifeiWu与他朋友们的专栏

造个轮子之基于 Netty 实现自己的 RPC 框架

服务端开发都会或多或少的涉及到 RPC 的使用,当然如果止步于会用,对自己的成长很是不利,所以楼主今天本着知其然,且知其所以然的精神来探讨一下 RPC 这个东西...

1173
来自专栏JAVA高级架构

Spring 知识点提炼

1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,...

3629
来自专栏Java帮帮-微信公众号-技术文章全总结

day05.轻量级RPC框架【大数据教程】

day05.轻量级RPC框架【大数据教程】 轻量级RPC框架开发 1. RPC原理学习 1.1. 什么是RPC RPC(Remote Procedure Cal...

3047
来自专栏lgp20151222

Spring中的@scope注解

但是也可以理解成,singleton是启动创建,prototype/request/session/globalsession是动态创建。

901
来自专栏陈本布衣

Spring基础篇——Spring容器和应用上下文理解

上文说到,有了Spring之后,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程,走啊走啊,走到哪里,需要另...

4327

扫码关注云+社区