在Java开发中,我们常常需要用到Java接口型模式中的适配器模式,那适配器设计模式到底是什么模式呢?

适配器模式(Adapter)就是把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。举个例子来说,现在一般的家用电器要求的电压都是 220V,但有个别电器要求使用110V 电压,怎么办?这时就需要用一个能把 220V 电压转换成 110V 电压的变压器,这个变压器就是一个适配器。

哪些情况我们需要使用适配器模式呢?

1、系统需要使用的类的接口不符合系统的要求。

2、要建立一个可以重复使用的类,用于与该类之间关联不大的一些类,包括工作中引进的类。

3、类的适配器模式使用起来有点像多重继承机制,利用接口的特性,把一些零散类组织到一起,成为一个新的类来实现调用,并且看起来像是对一个类的操作。实际上,适配器模式更多的是强调对代码的组织,而不是功能的实现。

Java中适配器模式有什么作用呢?

适配器模式可以方便代码的组织与模型的准确表示,可以把一个类中的成员插到另一个类的继承子类中,从而让这个继承的子类看起来像一个新类,同时可以对父类减少依赖。

了解了适配器模式的相关概念以后,我们最关心的还是它的实现,具体的设计过程是怎样的呢?

(1)定义适配器接口。代码如下:

public interface IAdapter

//适配器接口

{

String Drive();

}

(2)定义适配器类 Adapter,实现 IAdapter 接口。代码如下:

public class Adapter implements IAdapter

//适配器类

{

public String Drive()

{

return "变压器";

}

}

(3)定义改变适配器类,该类主要实现将变压器的电压从 110V 改变为 220V。代码如下:

public class ChangeAdapter

//改变适配器类

{

public String Web(String str)

{

return str;

}

}

(4)定义输出电压为 110V 的变压器类。代码如下:

public class CClass extends ChangeAdapter implements IAdapter

//实现类适配器

{

public String Drive()

{

return this.Web("(1)输出电压:110V");

}

}

(5)定义输出电压为 220V 的变压器类。代码如下:

public class CObject implements IAdapter

//实现对象适配器

{

private ChangeAdapter changeAdapter;

public CObject()

{

changeAdapter = new ChangeAdapter();

}

public String Drive()

{

return changeAdapter.Web("(2)输出电压:220V");

}

}

(6)在 main()方法中使用变压器将 110V 的电压变压为 220V。代码如下:

class Program

{

public static void main(String[] args)

{

IAdapter dap = new Adapter();

System.out.println((dap.Drive()));

dap = new CClass();

//调用第一个适配器

System.out.println((dap.Drive()));

dap = new CObject();

//调用第二个适配器

System.out.println((dap.Drive()));

}

}

以上就是Java适配器模式的作用和具体使用方法,大家遇到类似情况时,可以用上面的代码尝试实现适配器模式。最后希望小编的分享,对大家在Java编程中有帮助。

相关阅读:《Java 8 对象类型

最新文章

  1. 从零自学Hadoop(01):认识Hadoop
  2. PHP的基本排序算法
  3. JustSniffer
  4. Linux 基础入门 第一周9.14~9.20
  5. css text-overflow溢出文本显示省略号
  6. zend studio使用入门
  7. UNIX环境高级编程--高级I/O(三)
  8. linux 查看日志
  9. [POI2008]枪战Maf
  10. MySQL触发器学习
  11. IdentityServer4实战 - 基于角色的权限控制及Claim详解
  12. cookie 和session 的区别(转)
  13. RS485 通信接收时丢失0x11等数据
  14. 12 jmeter性能测试实战--web程序
  15. redis从入门到放弃 -> 部署方案
  16. Spring batch学习 持久化表结构详解(2)
  17. filter防盗链
  18. GridView简单使用
  19. python urllib2/urllib实现
  20. CF438D The Child and Sequence 线段树

热门文章

  1. Oracle AWR快照管理与常见问题
  2. 通过ip地址访问同一局域网下已经启动的angular项目
  3. SpringBoot学习9:springboot整合thymeleaf
  4. 爬虫学习(十六)——jsonpath
  5. Pagehelper介绍
  6. JQuery制作网页—— 第四章JavaScript对象及初识面向对象
  7. 微信小程序CheckBox选中事件
  8. PLC状态机编程第五篇-状态机自动生成PLC程序
  9. C5509A启动使用定时器
  10. UCLOUD使用云主机