适配器模式:

适配器就相当于我们的转接头,比如手机充电器插头(小米和华为的手机充电器不能共用,这时候就可以给华为的充电器按一个转接头,就可以给小米手机充电)。

同理,当一个类(充电器 HuaweiCharger)实现了某一个接口(华为 HuaweiPhone),但有时我们又需要去实现另一个接口(小米 XiaomiPhone),如果直接让充电器去实现小米接口,就需要实现小米接口中的方法,如果充电器类已经被打到一个包中,这时候修改就比较困难,也违反开闭原则(扩展开,修改闭)。因此我们就需要建立一个适配器类(HTXAdapter Huawei Transform Xiaomi Adapter)去实现小米接口,同时又继承自充电器类。

 /**
* 华为手机接口
*
* @author DennyZhao
* @date 2017年6月20日
* @version 1.0
*/
public interface HuaweiPhone { public int getSquarePlug(); public int getSquareInterface(); public void getAndroidSys(); public void getHuaweiInput(); public void getInterCpu(); public void getInterBoard(); }

HuaweiPhone

 /**
* 小米手机
*
* @author DennyZhao
* @date 2017年6月20日
* @version 1.0
*/
public interface XiaomiPhone { public int getCirclePlug(); public int getCircleInterface(); public void getAndroidPlusSys(); public void getXiaomiInput(); public void getAMDCpu(); public void getAMDBoard();
}

XiaomiPhone

 /**
* 华为充电器
*
* @author DennyZhao
* @date 2017年6月20日
* @version 1.0
*/
public class HuaweiCharger extends HuaweiPhoneImpl implements HuaweiPhone{ @Override
public int getSquarePlug() {
System.out.println("squarePlug----------");
return 0;
} @Override
public int getSquareInterface() {
System.out.println("squareInterface----------");
return 0;
} }

HuaweiCharger

 /**
* description:设计原则讲究扩展开,修改闭。因此当我们需要将一个类去实现另一个接口时,可以通过创建子类去实现这个接口。
*
* @author DennyZhao
* @date 2017年6月12日
* @version 1.0
*/
public class HTXAdapter extends HuaweiCharger implements XiaomiPhone{ /**
* 小米适配
*/
@Override
public int getCirclePlug() {
int a = super.getSquarePlug();
return a+ 5;
} /**
* 小米适配
*/
@Override
public int getCircleInterface() {
int b = super.getSquareInterface();
return b + 4;
}
@Override
public void getAndroidPlusSys() {
// TODO Auto-generated method stub } @Override
public void getXiaomiInput() {
// TODO Auto-generated method stub } @Override
public void getAMDCpu() {
// TODO Auto-generated method stub } @Override
public void getAMDBoard() {
// TODO Auto-generated method stub } }

HTXAdapter

通过上面的代码就可以知道,HTXAdaper实现了Xiaomi接口的所有方法,这样就不会污染HuaweiCharger了。随时不用可以去掉。插拔式结构。

构建模式--Adapter模式(JAVA)的更多相关文章

  1. Abstract Server模式,Adapter模式和Bridge模式

    简易的台灯 Abstract Server模式 谁拥有接口. 接口属于它的客户,而不是它的派生类. 接口和客户之间的逻辑关系,强于接口和其派生类的逻辑关系. 逻辑关系和实体关系的强度是不一致的.在实体 ...

  2. 从Decorator,Adapter模式看Java的IO库

    我想任何一本介绍模式的书在讲到Decorator模式的时候不能不提到它的实际应用--在Java/IO库里面的应用,<<Java与模式>>这本书也不例外,有点不一样的是,这本书在 ...

  3. java设计模式—Adapter模式

    1.核心意图:     将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作. 该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adap ...

  4. Java设计模式(9)适配器模式(Adapter模式)

    适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 为何使用适配器模式 我们经常碰到要将两个没有关系的类组合在一起使用 ...

  5. java演示适配器(adapter)模式

    为什么要使用模式: 模式是一种做事的一种方法,也即实现某个目标的途径,或者技术. adapter模式的宗旨就是,保留现有类所提供的服务,向客户提供接口,以满足客户的需求. 类适配器:客户端定义了接口并 ...

  6. Java 实现适配器(Adapter)模式

    平时我们会常常碰到这种情况,有了两个现成的类,它们之间没有什么联系.可是我们如今既想用当中一个类的方法.同一时候也想用另外一个类的方法.有一个解决方法是.改动它们各自的接口.可是这是我们最不愿意看到的 ...

  7. 设计模式学习笔记-Adapter模式

    Adapter模式,就是适配器模式,使两个原本没有关联的类结合一起使用. 平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类 ...

  8. 设计模式之(二)Adapter模式

    今天学习Adapter模式,An adapter helps two incompatible interfaces to work together. This is the real world ...

  9. 设计模式之Adapter模式

    说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL sta ...

随机推荐

  1. RPM包安装软件 -- 详细解读

    一.RPM包命名规则 1.RPM包在哪 RPM包在光盘中 2.RPM包命名原则 httpd-2.2.15-15.e16.centos.1.i686.rpm httpd 软件包名 2.2.15 软件版本 ...

  2. 廖雪峰Java5集合-3Map-Properties的使用

    Properties用于读取配置 properties文件只能使用ASCII码 #表示注释 可以从文件系统读取.properties文件 Properties props = new Properti ...

  3. go语言学习--go的临时对象池--sync.Pool

    一个sync.Pool对象就是一组临时对象的集合.Pool是协程安全的. Pool用于存储那些被分配了但是没有被使用,而未来可能会使用的值,以减小垃圾回收的压力.一个比较好的例子是fmt包,fmt包总 ...

  4. go语言笔记——切片函数常见操作,增删改查和搜索、排序

    7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如  ...

  5. DrawerLayout 使用

    <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.Drawe ...

  6. [UE4]Get Parent,widget获得父容器实例对象

  7. JIT和AOT编译详解

    JIT和AOT编译介绍 JIT - Just-In-Time             实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...

  8. 转 WiFi的STA和AP模式指什么?

    1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP. 2):STA站点,每一个连接到无线网络中的终端(如笔记本电脑.PDA及其它可以联网 ...

  9. Solr的Filed中indexed与stored属性

    摘要: Solr的Filed中有很多参数,其中的index和store参数让人有点犯晕. 消失的Field <field name="description_s" type= ...

  10. jQuery设置div的自适应布局

    一.HTML代码: <div class="ui-wraper" id="Wraper"> </div> 二.CSS代码: html { ...