`

Adaptor-适配器模式-1

阅读更多

作用:适配器(也叫Wrapper-包装器)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也就是将既有内容转换成需要结果,是代码重用的利器之一,Java I/O中应用了这种模式(如ByteArrayInputStreamByteArrayOutputStream)。形象地:就如同笔记本电脑的电源适配器,一端是220交流电(既有内容),另一端12v直流电(需要结果)。

 

分类Adaptor模式有两种,类适配器(继承)、对象适配器(委托) 。两种模式各有优劣,具体在代码解析中说明。

 

 示例-类适配器(继承):

 

电源

程序示例

既有内容

交流电220V

Banner类(showWithParen,shoWithAster

转换装置

适配器

PrintBanner

需要的结果

直流电12V

Print接口 PrintWeakPrintStrong

 类图查看图片附件:类图-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
分享到:
评论

相关推荐

    51丨适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?1

    适配器模式是一种结构型设计模式,其主要目的是解决接口不兼容问题,使得原本由于接口差异无法协同工作的类能够一起工作。适配器模式通过创建一个新的类(适配器),将旧的接口转换成目标接口,从而实现了系统的解耦...

    适配器adaptor

    在Java中,适配器模式经常被用来解决类与类之间接口不匹配的问题,使得原本无法一起工作的类能够协同工作。本教程将通过几个小例子深入讲解Java中的适配器模式。 首先,理解适配器模式的基本概念。适配器模式通过...

    adaptor设计模式

    1. 数据源适配:当你需要在一个视图控制器中展示来自不同数据源的数据时,可以使用适配器模式。例如,一个UITableView需要显示网络API返回的数据,但这些数据可能需要转换成UITableViewDataSource协议所要求的格式。...

    适配器设计模式入门之一

    1.概念:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 2.为何使用:我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,...

    0-30 isis_switching_Adaptor_3a_

    描述“Switching adaptor 0-30 volts / 3A”进一步确认了这个适配器的规格,它是一个开关模式电源(Switching Mode Power Supply,简称SMPS),能够提供0到30伏的可调电压,并且最大电流能力为3安培。开关模式电源...

    Ethernet Adaptor网卡驱动

    "Ethernet Adaptor"是网卡的一种类型,指的是遵循以太网标准的网络适配器。以太网是目前最普遍采用的局域网(LAN)技术,其基础是IEEE 802.3标准。本文将深入探讨以太网适配器的工作原理、驱动程序的作用以及如何...

    23种java版设计模式源码案例.zip

    适配器模式(adaptor) 桥接模式(bridge) 组合模式(composite) 装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) ...

    usb 2.0 10/100M Ethernet Adaptor驱动

    "外接网卡的驱动"指的是专门为这种通过USB接口连接的外部网络适配器设计的驱动程序。驱动程序是操作系统与硬件设备之间的桥梁,它负责解释并执行来自操作系统的指令,使得硬件能够正常工作。对于USB网卡来说,驱动...

    USB 2.0 10/100M Ethernet Adaptor有线网卡驱动

    2. **10/100M Ethernet**:10/100M指的是适配器支持两种速度模式,10Mbps和100Mbps,是标准以太网速度。它适用于家庭、办公室等场景,能提供稳定且足够的网络速度进行日常上网、文件传输等活动。 3. **有线网卡驱动...

    超市管理系统java源码swing-king-design:23种java设计模式

    适配器模式(adaptor) 桥接模式(bridge) 组合模式(composite) 装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) ...

    12种设计模式源码

    1. **适配器模式(Adaptor Pattern)**:这种模式用于将两个不兼容的接口进行适配,使得原本不能一起工作的类可以协同工作。在`adaptor`目录下的源码中,你可以看到如何通过创建一个适配器类,将旧的或第三方库的...

    homework for redis adaptor test

    【Redis适配器测试的家庭作业】是针对使用...总之,完成这个“homework for redis adaptor test”不仅要求你熟悉Redis的基础知识,还需要你具备良好的编程能力和问题解决技巧,以实现高效、稳定、安全的Redis适配器。

    AM2343P-T1-PF-VB一款SOT23封装P-Channel场效应MOS管

    - **Vth=-1V**:阈值电压为-1V,即开启电压。 ### 标签分析:“mosfet vbsemi” - **mosfet**:表明产品属于MOSFET类别。 - **vbsemi**:可能是制造商的品牌名或者商标,即VBsemi公司。 ### 部分内容详解 #### ...

    二十三种设计模式【PDF版】

    1.设计模式更抽象,J2EE 是具体的产品代码,我们可以接触到,而设计模式在对每个应用时才会产生具体代码。 2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入...

    补充与复习1

    - 适配器是一种设计模式,用于改变现有容器的行为。 - 比如`reverse_iterator`用于逆序遍历容器。 - **内存分配器** - 分配器用于管理内存资源。 - C++11引入了自定义内存分配器的概念,允许用户控制内存的分配...

    USB 2.0 10/100M Ethernet Adapter驱动

    1. 访问制造商官方网站:大多数硬件设备的驱动程序都可以在其制造商的官方网站上找到。查找对应适配器的型号,然后进入“支持”或“下载”区域。 2. 选择操作系统:根据你的计算机操作系统(Windows、Mac OS、Linux...

    LY7607 USB自动识别芯片.pdf

    - 墙壁适配器(Wall Adaptor) - 充电底座和支架(Charging Docks and Cradles) 5. 引脚配置和标记: LY7607的引脚配置如下: - VBUS(5V):用于USB充电的5V电源。 - VCC:电源输入,为IC提供电流。 - D+:USB正...

    CSR 公司的蓝牙dongle驱动程序的源代码

    1. **蓝牙协议栈**:CSR的驱动程序可能基于Bluetooth 4.0规范,这是蓝牙技术联盟(SIG)推出的一种低功耗、高速度的无线通信标准。它包括了基础射频层、链路管理器、逻辑链路控制和适配器访问协议(L2CAP)、服务...

    US3401-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明

    - **Threshold Voltage (VGS(th))**: -1V — 在规定条件下,使MOSFET开始导通所需的栅极与源极之间的最小电压。 ### 三、应用说明 US3401-VB因其独特的性能和结构设计,在多个领域都有着广泛的应用: - **Load ...

    ARM-Linux-ⅡC设备的添加与驱动实现.pdf

    - **适配器(Adaptor)**:针对不同的硬件平台,实现IIC总线控制器的具体操作。 - **算法(Algorithm)**:提供与特定IIC控制器交互的策略。 - **客户驱动(Client Driver)**:针对特定IIC设备的驱动程序,处理设备...

Global site tag (gtag.js) - Google Analytics