在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 对象类型

Java设计模式中适配器模式的实现方法的更多相关文章

  1. Java设计模式之适配器模式(项目升级案例)

    今天是我学习Java设计模式中的第三个设计模式了,但是天气又开始变得狂热起来,对于我这个凉爽惯了的青藏人来说,又是非常闹心的一件事儿,好了不管怎么样,目标还是目标(争取把23种Java设计模式接触一遍 ...

  2. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  3. JAVA项目中引用Logback的方法

    一.简介 本文主要讲JAVA项目中引入Logback的方法. 二.解决 1.引入依赖. <!--Begin LogBack Log--> <!-- https://mvnreposi ...

  4. Java设计模式中的单例模式

    有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式.设计单例模式主要采用了Java的pri ...

  5. 【转】使用JavaParser获得Java代码中的类名、方法形参列表中的参数名以及统计总的文件个数与不能解析的文件个数

    遍历目录查找Java文件: public static void ergodicDir(File dir, HashSet<String> argNameSet, HashSet<S ...

  6. java设计模式5——适配器模式

    java设计模式5--适配器模式 1.结构型模式介绍 1.1.作用 从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类: 适配器模式 代理模式 桥接模式 装饰模式 组合模式 ...

  7. Java设计模式之四 ----- 适配器模式和桥接模式

    前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式.本篇则来学习下结构型模式的适配器模式和桥接模式. 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型 ...

  8. Java设计模式----初识适配器模式

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  9. Java线程中yield与join方法的区别

    长期以来,多线程问题颇为受到面试官的青睐.虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用.之前,我讨论了一个w ...

随机推荐

  1. 第33题:LeetCode255 Verify Preorder Sequence in Binary Search Tree 验证先序遍历是否符合二叉搜索树

    题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 考点 1.BST 二叉搜索树 2.递归 思路 1.后序 ...

  2. 1801: [Ahoi2009]chess 中国象棋

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2520  Solved: 1524[Submit][Status][Discuss] Descripti ...

  3. 实例:关于ALV控件可编辑的整理

    使ALV控件中的内容可编辑 这应该是一个非常有用的功能,这样我们便可以用它来代替table control来编出一些有这现成功能的界面来.实际上,让alv中的内容可以被编辑与alv的事件无关.但是经常 ...

  4. LeetCode-177:第N高的薪水

    第N高的薪水与第二高的薪水,解题思路是一样的,只要对LeetCode-176的SQL做一下变形,便可以满足这题,详见:https://www.cnblogs.com/zouqf/p/10282392. ...

  5. Tomcat的部署+第一个Servlet

    Tomcat部署 1.下载tomcat,添加到eclipse 2.配置环境变量(path) 3.win+r,输入Startup(如果没用,就管理员启动命令) 或者找到tomcat安装包,在bin目录找 ...

  6. 前端vue项目部署到tomcat,一刷新报错404解决方法

    公司前端写的后台部署到tomcat webapps目录下后,无法进行刷新,一刷新就会报错404,自动跳的404页面.在网上查了下,官方说是HTML5 History 模式引发的问题,但是解决方案中,并 ...

  7. give me something new 无用但有趣

    屏保系列 http://www.asty.org/cmatrix/dist/cmatrix-1.2a.tar.gz  //数码雨 libaa-bin //燃烧 海洋馆 http://search.cp ...

  8. 【PHP】nl2br转化输出input框的换行

    在input或者textarea框中输入的换行符保存到数据库是/n,如果直接输出到前端的话是不会有换行的,所以要用到nl2br转化 nl2br($test);

  9. 项目配置中 提示access denied的问题 解决方案

    项目配置中 提示access denied的问题,一般原因是你的服务器或虚拟主机的pathinfo没开.... 具体解决办法如下 在PHP安装文件夹下找到php.ini.在文件中搜索cgi.fix_p ...

  10. PHP表单安全过滤和防注入 htmlspecialchars() 和test_input()

    什么是 htmlspecialchars() 函数? htmlspecialchars() 函数把特殊字符转换为 HTML 实体.这意味着 < 和 > 之类的 HTML 字符会被替换为 & ...