文档章节

适配器模式

CurtainRight
 CurtainRight
发布于 2016/04/18 16:17
字数 288
阅读 15
收藏 1

定义:

将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间


1、Java中适配器

java.util.Arrays#asList()
java.io.InputStreamReader(InputStream)返回一个Reader对象
java.io.OutputStreamWriter(OutputStream)返回一个Writer对象
javax.xml.bind.annotation.adapters.XmlAdapter#marshal()与#unmarshal()

测试Arrays.asList()(数组转列表)

String[] bArray = {"a","b","c", "d", "e"};
System.out.println(Arrays.asList(bArray));//ArrayList[a, b, c, d, e]

查看Arrays.asList()

 //传递一个与当前类型不匹配的类或者接口,返回一个经过修饰或重写给定参数实例的抽象类或接口的实现。
 public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
 }

2、自己测试的适配器

鸭子变火鸡

public interface Duck {
	public void quack();
}

public class MalardDuck implements Duck {
	@Override
	public void quack() {
		System.out.println("呱呱");
	}
}

public interface Turkey {
	public void gobble();
}

public class WildTurkey implements Turkey {
	@Override
	public void gobble() {
		System.out.println("咯咯");
	}
}

public class TurkeyAdapter implements Duck {
	Turkey turkey;
	//传递想要转换成的接口或者对象
	public TurkeyAdapter(Turkey turkey) {
		super();
		this.turkey = turkey;
	}
	@Override
	public void quack() {
		//去调用真正需要的功能
		turkey.gobble();
	}
}

public static void main(String[] args) {
		WildTurkey wildTurkey = new WildTurkey();
		Duck turkeyAdapter = new TurkeyAdapter(wildTurkey);
		turkeyAdapter.quack();//咯咯
	}


© 著作权归作者所有

上一篇: 策略模式
下一篇: 外观模式
CurtainRight
粉丝 6
博文 172
码字总数 61177
作品 0
武汉
程序员
私信 提问

暂无文章

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
8
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
8
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
5
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部