一.适配器模式
   就是个通过一个中间件转化,可以将不匹配的两件事整合到一起,把不匹配变的匹配。

二.适配器分类
  1.类适配器
   2.对象适配器

三. 适配器的3种组成
  1.类适配器组成
    1.2个接口 A,B ,分别定义2种不同的方法
    2.1个实现类C,实现A接口,并重写方法
    3.适配类继承C 并实现B接口
  2.对象适配器
      1.2个接口 A,B ,分别定义2种不同的方法
    2.1个实现类C,实现A接口,并重写方法,同时定义B接口为该类的属性,通过构造方法将B接口传入赋值
    3.B接口的实现类

  3.接口适配器

    1.A接口中有10 个方法

    2.抽象类实现A接口,重写A接口中任意方法

    3.实现类来完成具体细节

四.应用场景

  适配器模式其核心是将2个或多个完全没有关联的接口通过一个中间类或者接口的方式关联在一起,其目的是为了调用的方便。

  类适配器:利用多态的方式来提高面向对象模式来实现类适配器,在编程中提高了解耦合的特点

  对象适配器:通过类属性的方式来实现对象适配器,虽然其中也利用了接口的多态,但是这种方式的耦合度高,个人不建议这样用

  接口适配器:假如有个A接口中有10+个方法,我们只需要重写其中的1个方法,此时就需要一个抽象类全部空实现这个大的抽象类,然后再通过子类继承父类的方式,可以重写

        父类中我们需要的方法即可

五.具体实现过程

 1.类适配器实现代码

/**
* USB接口
* @author zhao
*
*/
public interface USB {
public void USB();
} /**
* typeC接口
* @author zhao
*
*/
public interface TypeC {
public void typeC();
} /**
* typeC接口的实现类
* @author zhao
*
*/
public class TypeCImpl implements TypeC{ @Override
public void typeC() {
System.out.println("...C...接口...");
} } /**
* 适配器类
* @author zhao
*
*/
public class Adapter extends TypeCImpl implements USB{ @Override
public void USB() {
System.out.println("USB 转换成 TypeC 接口...");
typeC();
}
} //类适配器_测试类代码
public class MainTest {
    public static void main(String[] args) {
USB adapter = new Adapter();
adapter.USB();
}
} // 测试类代码
public class MainTest {
  public static void main(String[] args) {
      USB adapter = new Adapter();
      adapter.USB();
  } }

2.对象类适配器

/**
* USB接口
* @author zhao
*
*/
public interface USB {
public void USB();
} /**
* typeC接口
* @author zhao
*
*/
public interface TypeC {
public void typeC();
}
/**
* typeC接口的实现类
* @author zhao
*
*/
public class TypeCImpl implements TypeC{ @Override
public void typeC() {
System.out.println("...C...接口...");
} }
/** 
 * 对象类适配器
 * @author zhao
 *
 */
public class AdapterObject implements USB{   private TypeC typeC;   public AdapterObject(TypeC typeC){
     this.typeC = typeC;
  }
  
  @Override
  public void USB() {
    System.out.println("...obj...convers");
    typeC.typeC();
   }
}
public class MainTest {
public static void main(String[] args) {
TypeC c = new TypeCImpl();
USB adapterObj = new AdapterObject(c);
adapterObj.USB();
}
} // 测试类代码 public class MainTest {
  public static void main(String[] args) {
    TypeC c = new TypeCImpl();
    USB adapterObj = new AdapterObject(c);
    adapterObj.USB();
  }
}

3.接口类适配器

/**
* 接口类A
* @author pengbo.zhao
*
*/
public interface AdapterInterface {
void test0();
void test1();
void test2();
void test3();
void test4();
void test5();
void test6();
void test7();
void test8();
void test9();
} /**
* 抽象类全部空实现
* @author pengbo.zhao
*
*/
public abstract class AdapterInter implements AdapterInterface{ @Override
public void test0() {
// TODO Auto-generated method stub
} @Override
public void test1() {
// TODO Auto-generated method stub
}
@Override
public void test2() {
// TODO Auto-generated method stub
}
@Override
public void test3() {
// TODO Auto-generated method stub
}
@Override
public void test4() {
// TODO Auto-generated method stub
}
@Override
public void test5() {
// TODO Auto-generated method stub
}
@Override
public void test6() {
// TODO Auto-generated method stub
}
@Override
public void test7() {
// TODO Auto-generated method stub
}
@Override
public void test8() {
// TODO Auto-generated method stub
}
@Override
public void test9() {
// TODO Auto-generated method stub
}
} /**
* 适配器实现类,可以重写抽象类中的任意方法
* @author pengbo.zhao
*
*/
public class AdapterImpl extends AdapterInter{ @Override
public void test0() {
System.out.println("... 适配器接口...0");
} @Override
public void test3() {
System.out.println("... 适配器接口...3");
}
}

java23种设计模式之三: 适配器模式的更多相关文章

  1. java23种设计模式—— 一、设计模式介绍

    Java23种设计模式全解析 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式--四.原型模 ...

  2. java23种设计模式——八、组合模式

    目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式--四.原型模式 java23种设计模式-- ...

  3. java23种设计模式——七、桥接模式

    原文地址:https://www.cnblogs.com/chenssy/p/3317866.html 源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 j ...

  4. java23种设计模式 (转)

    文章在:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 随着自己的开发经验增加以及自己做了很多的 大专栏  jav ...

  5. java23种设计模式——四、原型模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

  6. java23种设计模式——五、建造者模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

  7. java23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 学习java23种设计模式自我总结

    首先先做个广告,以前看过@maowang 这位大神转的Java开发中的23种设计模式详解(转) ,但是看了之后都忘差不多了, 所以,开个帖子边学习边自我总结(纯手敲).一直以来像这种需要长久的运动,真 ...

  9. java23种设计模式等等。。

    23种设计模式http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 提升Java代码性能和安全性https://blog ...

随机推荐

  1. JSON 序列化与反序列化(二)使用TypeReference 构建类型安全的异构容器

    1. 泛型通常用于集合,如Set和Map等.这样的用法也就限制了每个容器只能有固定数目的类型参数,一般来说,这也确实是我们想要的. 然而有的时候我们需要更多的灵活性,如数据库可以用任意多的Column ...

  2. 1.如何在虚拟机ubuntu上安装hadoop多节点分布式集群

    要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个had ...

  3. Linux界面交互与目录结构

    一.交互通道 Linux系统环境默认有六个命令交互通道和一个图形界面交互通道,默认进入的是图形界面通道. 命令交互模式切换:ctrl+alt+F1-F6 图形界面交互模式:ctrl+alt+F7   ...

  4. lua在线手册汇总

    1. Lua官方参考手册 Lua 4.0 : http://www.lua.org/manual/4.0/Lua 5.0 : http://www.lua.org/manual/5.0/Lua 5.1 ...

  5. 页面优化——减少HTTP请求数

    1.关于减少http请求数 关于减少http请求数,是前端开发性能优化的一个非常重要方面,所以在基本所有的优化原则里,都有这一条原则:减少http请求数. 先不考虑其他的,我们先考虑为什么减少http ...

  6. 前端调试利器——BrowserSync

    此处记录一下踩过的坑 之前看的这个地址:http://www.browsersync.cn/ 也就是 BrowserSync的官网上面关于代理服务器的例子不管怎么试都不行 请看下例子 browser- ...

  7. css伪类与伪元素

    原文:http://www.alloyteam.com/2016/05/summary-of-pseudo-classes-and-pseudo-elements/ 伪类的操作对象是文档树中已有的元素 ...

  8. [acm/icpc2016ChinaFinal][CodeforcesGym101194] Mr. Panda and Fantastic Beasts

    地址:http://codeforces.com/gym/101194 题目:略 思路: 这题做法挺多的,可以sam也可以后缀数组,我用sam做的. 1.我自己yy的思路(瞎bb的) 把第一个串建立s ...

  9. hdu 1569 &1565 (二分图带权最大独立集 - 最小割应用)

    要选出一些点,这些点之间没有相邻边且要求权值之和最大,求这个权值 分析:二分图带权最大独立集. 用最大流最小割定理求解.其建图思路是:将所有格点编号,奇数视作X部,偶数视作Y部,建立源点S和汇点T, ...

  10. Winter-1-D Max Sum 解题报告及测试数据

    Time Limit:1000MS Memory Limit:32768KB Description Given a sequence a[1],a[2],a[3]......a[n], your j ...