文档章节

结构型模式之一:适配器模式

奋斗到天明
 奋斗到天明
发布于 2015/08/27 16:37
字数 427
阅读 31
收藏 0

在现代Java框架中,适配器模式被频繁的使用。 当你想使用一个存在的类,但是他的接口不是你需要的那个,或者你想创造一个可以重复使用的类,能与有不相容接口的无关类协作。

1、适配器模式

适配器的用意可以用下面一个简单的例子来证明。简单例子的目的是将一个橘子适配成苹果。  

从下面的类图,适配器包括一个Orange类的实例,并继承Apple类,这看上去像当一个Orange对象得到一个适配器的皮肤,他就表现得像Apple对象。

2、适配器类图

3、适配器模式Java实现

的确,这可能是关于适配器模式最简单的例子,一个双工的适配器可能用得更多,实现一个双工的适配器,适配器必须实现一个接口,并包含两个实例,他还是一个简单的主意。

class Apple {
  public void getAColor(String str) {
    System.out.println("Apple color is: " + str);
  }
}
 
class Orange {
  public void getOColor(String str) {
    System.out.println("Orange color is: " + str);
  }
}
 
class AppleAdapter extends Apple {
  private Orange orange;
 
  public AppleAdapter(Orange orange) {
    this.orange = orange;
  }
 
  public void getAColor(String str) {
    orange.getOColor(str);
  }
}
 
public class TestAdapter {
  public static void main(String[] args) {
    Apple apple1 = new Apple();
    Apple apple2 = new Apple();
    apple1.getAColor("green");
 
    Orange orange = new Orange();
 
    AppleAdapter aa = new AppleAdapter(orange);
    aa.getAColor("red");
  }
}

4、适配器在Java SDK中

java.io.InputStreamReader(InputStream) (returns a Reader)
java.io.OutputStreamWriter(OutputStream) (returns a Writer)

在现实的在框架中, 这个意图可能不是十分的明显。尽管适配器在Eclipse中不是容易的发现, 这是在Eclipse 运行时中,一个邮件指向的使用。 

以上文章翻译自: http://www.programcreek.com/2011/09/java-design-pattern-adapter/

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
私信 提问
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0
PHP设计模式(一):简介及创建型模式

我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设...

juhenj
2014/05/15
228
2
java设计模式-- 单例模式

在很久之前,也就是在大二暑假的时候,那时候看马士兵的视频教程中有提到很多的设计模式。 java的设计模式大致可以分为3大类,23种设计模式。 其中,创建型模式有5种:单例模式、建造者模式、...

爱学习的逃课君
2014/11/27
0
0
【软考学习】设计模式——状态模式

【背景】 设计模式是非常重要的一块知识,每个设计模式都值得深入了解和学习。 【内容】 结构型设计模式总结: 状态设计模式总结: 一、定义:当一个对象的内在状态改变时允许改变其行为,这...

yym15732626210
01/31
0
0
小菜学设计模式——设计模式总结之创建型

1、面向过程与面向对象 1)面向过程通过划分功能模块,通过函数间相互调用来实现,但需求变化时就需要更改函数,而你改动的函数有多少地方在调用她呢?关联多少数据,这是很不容易弄得清楚地...

learn_more
2015/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
3
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
6
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部