作用:适配器(也叫Wrapper-包装器)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也就是将“既有内容”转换成“需要结果”,是代码重用的利器之一,Java I/O中应用了这种模式(如ByteArrayInputStream、ByteArrayOutputStream)。形象地:就如同笔记本电脑的电源适配器,一端是220交流电(既有内容),另一端12v直流电(需要结果)。
分类:Adaptor模式有两种,类适配器(继承)、对象适配器(委托) 。两种模式各有优劣,具体在代码解析中说明。
示例-类适配器(继承):
|
电源
|
程序示例
|
既有内容
|
交流电220V
|
Banner类(showWithParen,shoWithAster)
|
转换装置
|
适配器
|
PrintBanner类
|
需要的结果
|
直流电12V
|
Print接口 (PrintWeak,PrintStrong)
|
类图查看图片附件:类图-Adapter_1
//------------------------------------------Banner类---------------------------------------------------------------
package adapter;
public class Banner{
private String strings;
public Banner(String strings){
this.strings = strings;
}
public void showWithParen(){
System.out.println("("+strings+")");
}
public void showWithAster(){
System.out.println("*"+strings+"*");
}
}
//------------------------------------------PrintBanner类---------------------------------------------------------------
package adapter;
public class PrintBanner extends Banner implements Print{
public PrintBanner(String strings){
super(strings);//父类构造函数来初始化~~
}
public void printWeak(){
showWithParen();
}
public void printStrong(){
showWithAster();
}
}
//------------------------------------------Print接口---------------------------------------------------------------
package adapter;
public interface Print{
public abstract void printWeak();
public abstract void printStrong();
}
//------------------------------------------测试类---------------------------------------------------------------
public class Main{
public static void main(String[] args){
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
示例-对象适配器(委托):
类图查看图片附件:类图-Adapter_2
//------------------------------------------Banner类---------------------------------------------------------------
同上
//------------------------------------------PrintBanner类---------------------------------------------------------------
package adapter;
public class PrintBanner extends Print{
private Banner banner;
public PrintBanner(String strings){
this.banner = new Banner(strings);
}
public void printWeak(){
banner.showWithParen();
}
public void printStrong(){
banner.showWithAster();
}
}
//------------------------------------------Print类---------------------------------------------------------------
package adapter;
public interface Print{
public abstract class Print{
public abstract void printWeak();
public abstract void printStrong();
}
//------------------------------------------测试类---------------------------------------------------------------
同上
- 描述: 类图-Adapter_1
- 大小: 21.9 KB
- 描述: 类图-Adapter_2
- 大小: 25.4 KB
- 描述: 类图-Adapter_3
- 大小: 22.9 KB
- 描述: 类图-Adapter_4
- 大小: 22.4 KB
分享到:
相关推荐
python库。 资源全名:pytest_testlink_adaptor-0.32-py3-none-any.whl
资源分类:Python库 所属语言:Python 资源全名:adaptor-0.1.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
ABB 机器人profinet anybus adaptor 的应用手册说明书3HAC050968anybus adaptor-en.pdf
DBus通讯方式中,设置适配器Adaptor和Interface的通讯方式比较麻烦,重点在于适配器类(Adaptor类)和接口类(Interface类)的生成,Qt有工具可以自动生成相应的类。※建议Qt中DBus通讯使用Interface-Connection方式...
DBus通讯方式中,设置适配器Adaptor和Interface的通讯方式比较麻烦,重点在于适配器类(Adaptor类)和接口类(Interface类)的生成,Qt有工具可以自动生成相应的类。※建议Qt中DBus通讯使用Interface-Connection方式...
允许 crudbrella 与猫鼬一起工作##Installation 安装 nodeJS、您选择的数据库和 crudbrella 后,通过 npm 安装此适配器 npm install adaptor-crudbrella-mongoose##Options ###Populate 要使用存储在另一个集合中的...
C64-CHARSET-Adaptor-Switch:准将C64字符ROM的适配器
core.zip,面向maven的primefaces扩展项目。primefaces扩展的核心功能
androidsvgdrawable-plugin.zip,在生成时为您的Android项目从SVG生成符合条件的、密度特定的PNG绘图。Gradle插件在生成时为您的Android项目从SVG文件生成符合条件的、密度特定的PNG绘图。
实验结果-病理学和筛选适配器适配器范围Lab Results Adapter的主要目标是隐藏复杂的旧标准,取而代之的是提供一个与当前NHSD国家标准保持一致的简单且一致的界面。 该适配器消除了GP系统处理EDIFACT和MESH消息传递的...
1.概念:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 2.为何使用:我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,...
集成适配器gpc消费者 国家集成适配器-GP Connect消费者 要求: JDK 11 配置 适配器从环境变量读取其配置。以下各节描述了用于配置适配器的环境变量。 没有默认值且未标记为可选的变量,必须定义才能运行适配器。 ...
Java适配器的几个小例子,对初学者有帮助
基于CSR是Audio-Adaptor-SDKRC3.1平台,蓝牙dongle程序
iOS设计模式之适配器模式,简单的demo 去分析对应的设计
Switching adaptor 0-30 volts / 3A
适配器模式(adaptor) 桥接模式(bridge) 组合模式(composite) 装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) ...
Android开发框架M-Adaptor,利用JS与Activity交互,减少一定的业务编码量