1、适配器模式( Adapter)定义
将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原来由于接口不兼容而不能一起工作的 那些类可以一起工作。 现实案例如下:

 墙上电源类(220 伏)

 笔记本类(客户,需要的电压<36 伏)

 适配器类(将 220 伏墙上电源类转换为<36 伏的电压)

2、模式场合

  当系统的数据和行为都正确,但接口不符时,此时可以考虑用适配器,目的是使控制范围之外的一个原有对 象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况, 比如在需要对早期代码复用一些功能等应用上很有实际价值。 适配器模式有两种类型:类适配器模式和对象适配器模式,由于类适配器模式通过多重继承实现,不提倡使 用,这里主要讲解对象适配器模式。

3、适配器模式举例代码

3.1、Target类

 package com.designmode.adapter;

 public interface Target {

     void request();
}

Target

3.2、Adaptee类

 package com.designmode.adapter;

 public class Adaptee {

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

Adaptee

3.3、Adapter类

 package com.designmode.adapter;

 public class Adapter implements Target {

     private Adaptee adaptee;

     public Adapter() {
adaptee = new Adaptee();
} @Override
public void request() {
adaptee.specificRequest();
} }

Adapter

3.4、测试类AdapterTest

 package com.designmode.adapter;

 public class AdapterTest {

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

AdapterTest

Java设计模式之适配器设计模式的更多相关文章

  1. Java设计模式之适配器设计模式(项目升级案例)

    今天是我学习到Java设计模式中的第三个设计模式了,但是天气又开始变得狂热起来,对于我这个凉爽惯了的青藏人来说,又是非常闹心的一件事儿,好了不管怎么样,目标还是目标(争取把23种Java设计模式接触一 ...

  2. 适配器设计模式初探(Java实现)

    本篇随笔主要介绍Java实现设配器设计模式. 先来看下待解决的问题: (图片转自http://blog.csdn.net/jason0539) 由上图的情况可知,欧洲壁式插座只有三足插口,如果我们想要 ...

  3. Java适配器设计模式

    适配器设计模式,一个接口首先被一个抽象类先实现(此抽象类通常称为适配器类),并在此抽象类中实现若干方法(但是这个抽象类中的方法体是空的),则以后的子类直接继承此抽象类,就可以有选择地覆写所需要的方法. ...

  4. JAVA基础—适配器设计模式

    适配器概念 在计算机编程中,适配器模式将一个类的接口适配成用户所期待的.使用适配器,可以使接口不兼容而无法在一起工作的类协调工作,做法是将类自己包裹在一个已经存在的类中. JDK对适配器设计模式的应用 ...

  5. JAVA IO 序列化与设计模式

    ➠更多技术干货请戳:听云博客 序列化 什么是序列化 序列化:保存对象的状态 反序列化:读取保存对象的状态 序列化和序列化是Java提供的一种保存恢复对象状态的机制 序列化有什么用 将数据保存到文件或数 ...

  6. 从追MM谈Java的23种设计模式(转)

    从追MM谈Java的23种设计模式    这个是从某个文章转载过来的.但是忘了原文链接.如果知道的,我追加一下. 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西 ...

  7. 黑马程序员——JAVA基础之简述设计模式

    ------- android培训.java培训.期待与您交流! ---------- 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓 ...

  8. 从追MM谈Java的23种设计模式

    从追MM谈Java的23种设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡 ...

  9. [gkk]传智-适配器设计模式,如同电源适配器

    //适配器设计模式 是图形化设计中用的.如同电源适配器 import java.awt.*; inport java.awte public calss MyFrame{ public static ...

随机推荐

  1. windows azure中国 里面建立一个虚拟机,与虚拟机建立通信 里面部署IIS,外网访问

    在windows azure中国 里面建立一个虚拟机,里面部署IIS,外网不能访问么? 外网访问的地址是给的那个DNS地址 ,比如我的是 DNS 名称 urbanairserver.cloudapp. ...

  2. dom添加事件

    1.语法:document.getElementById('btn').addEventListener 2.可以添加多个EventListener,且不会覆盖 3.移除EventListener, ...

  3. POJ 3156 - Interconnect (概率DP+hash)

    题意:给一个图,有些点之间已经连边,现在给每对点之间加边的概率是相同的,问使得整个图连通,加边条数的期望是多少. 此题可以用概率DP+并查集+hash来做. 用dp(i,j,k...)表示当前的每个联 ...

  4. kali linux karmetasploit配置【续】

    Karmetasploit In Action https://www.offensive-security.com/metasploit-unleashed/karmetasploit-action ...

  5. 嵌入式 -- WINKHUB 边信道攻击 (NAND Glitch)

    0x00 前言 随着物联网IOT的飞速发展,各类嵌入式设备, 路由器安全研究也越来越火. 但因为跟以往纯软件安全研究的要求不同, 这类研究往往需要结合相应的硬件知识. 很多朋友困惑如何开始, 甚至卡在 ...

  6. php空心菱形

    <?php for($i=1;$i<=9;$i++){ for($j=1;$j<=9-$i;$j++){ echo " "; } for($k=1;$k<= ...

  7. UITableView错误 ‘unable to dequeue a cell with identifier Cell'

    - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentif ...

  8. php大力力 [014节] 八杆子打不着的非技术文章,哈哈

    今天似乎是个值得纪念的日子 一个创业失败者的忠告:请不要再参加创业活动 PHP mysql_connect() 函数 mysql默认用户 随意发几个链接,没任何意义

  9. Reason we use Camel

    Camel is mainly for integration purpose, in our project we also use it inside the single component t ...

  10. JS对于Android和IOS平台的点击响应的适配

    IOS点击事件 Click 300毫秒点击延迟 解决办法: 参考:http://cuiqingcai.com/1687.html 可判断设备 if (/(iPhone|iPad|iPod|iOS)/i ...