Java 常用设计模式-适配器模式adapter
来源:互联网 发布:深圳雅思培训机构 知乎 编辑:程序博客网 时间:2024/05/21 18:48
本篇文章我们讲解适配器模式 adapter
顾名思义:适配器 -适配一词表明了已经存在了两个 类型 typeA和typeB ,但是此时他们是不相容的,必须通过一个 东西去 过度 一下,从而让他们 达到相容的一步,那么这个东西 就是我们 说的 适配器
适配器 可以分为三种:类的适配,对象的适配,接口的适配 接下来我们 一个一个接着来说
第一:类的适配
核心思想就是:有一个Source( typeA)类,拥有一个方法,待适配
目标接口时Targetable(typeB ),通过Adapter类,将Source的功能扩展到Targetable里,看代码:
源头类型(typeA)
package com.desionmodel.structure.adapter.classadapter;/** * 适配器模式是各种模式的起源 * * 过度作用 将源(source)---->目标(target) * 之间加一个 匹配过程 * @author Administrator * */public class Source { public void method1() { System.out.println("this is original method!"); } }目标接口
package com.desionmodel.structure.adapter.classadapter;public interface Targetable {/* 与原类中的方法相同 */ public void method1(); /* 新类的方法 */ public void method2(); }
使用适配器把源头类中的方法一(method1) 适配到 目标接口中,此时 我们可以想到 extends 即集成 源头类 这样就可以 获到父类的方法,那么 最终 想要变成 目标类的 类型要使用什么方法呢?
我们知道Java 是单继承的 ,所以要排除继承去变形-那么要 转型的话 就剩下 implement 实现 这条路了,即
package com.desionmodel.structure.adapter.classadapter;public class Adapter extends Source implements Targetable{@Overridepublic void method2() {System.out.println("this is the targetable method!"); }}
测试 一下:
package com.desionmodel.structure.adapter.classadapter;public class AdapterTest {public static void main(String[] args) { Targetable target = new Adapter(); target.method1(); target.method2(); } /** * 这样Targetable接口的实现类就具有了Source类的功能。 */}
上面说到了 类的适配,接下来我们说第二种 对象的适配
第二: 对象的适配
基本思路和类的适配器模式相同,只是将Adapter类作修改,这次不继承Source类,
而是持有Source类的实例,以达到解决兼容性的问题。
其他的类不变,只改变适配类---- 在此我们命名为 包装类 wrapper
package com.desionmodel.structure.adapter.objectadapter;import com.desionmodel.structure.adapter.classadapter.Source;import com.desionmodel.structure.adapter.classadapter.Targetable;/** * wrapper :包装 * @author Administrator * */public class Wrapper implements Targetable{ private Source source; public Wrapper(Source source){ super(); this.source = source; } @Override public void method2() { System.out.println("this is the targetable method!"); } @Override public void method1() { source.method1(); } }
测试 一下:
package com.desionmodel.structure.adapter.objectadapter;import com.desionmodel.structure.adapter.classadapter.Source;import com.desionmodel.structure.adapter.classadapter.Targetable;public class AdapterTest {public static void main(String[] args) { Source source = new Source(); Targetable target = new Wrapper(source); target.method1(); target.method2(); } }
第三:接口的适配
接口的适配其实 用的也挺多的,比如 接口中的方法较多,而一类 只想要部分功能-要是实现此接口的话,务必要实现此接口中所有的 方法,那么这样就有一点不合理了,显得有点多余,所以 就有了 接口的适配 达到 过滤的效果 即 只要我想要的方法
代码如下:
package com.desionmodel.structure.adapter.interfaceadaper;public interface Sourceable {/* 与原类中的方法相同 */ public void method1(); /* 新类的方法 */ public void method2(); }
package com.desionmodel.structure.adapter.interfaceadaper;public abstract class Wrapper2 implements Sourceable {// 此方法 子类不必实现 public void method1(){} }
package com.desionmodel.structure.adapter.interfaceadaper;public class SourceSub1 extends Wrapper2{@Overridepublic void method2() {System.out.println("method2");}}
以上就是适配器的内容,适配器特别重要 是 结构型设计模式的 起源,在其他结构型 设计模式 中 都可以看到(对象) 适配器的影子。
0 0
- Java 常用设计模式-适配器模式adapter
- Java设计模式:Adapter(适配器)
- Java设计模式-----Adapter适配器模式
- java 设计模式之一 适配器模式 adapter
- java设计模式---Adapter适配器模式
- Java设计模式 - Adapter(适配器模式)
- Java设计模式-----Adapter适配器模式
- Java:设计模式之适配器模式Adapter
- Java-设计模式(Adapter适配器模式)
- Java-设计模式(Adapter适配器模式)
- java设计模式之适配器模式Adapter
- JAVA设计模式---adapter(适配器模式)
- Java设计模式--适配器(Adapter)模式
- Java设计模式---适配器模式(Adapter)
- Java设计模式-适配器模式Adapter
- Java设计模式--适配器(Adapter)模式
- Java设计模式----适配器模式(Adapter)
- JAVA设计模式-适配器模式(Adapter)
- centos6.5终端下用sublime打开文件
- location.href
- java获取客户端的信息
- pycharm安装第三方库
- 二叉树的遍历
- Java 常用设计模式-适配器模式adapter
- 分享移动端车牌识别OCR识别流程
- Vue.js前后端同构方案之准备篇——代码优化
- Leetcode 68. Text Justification
- Iframe页面传值
- 1、嵌入式开发工具链
- 使用maven创建spring-boot项目
- android百度地图开发——android studio配置sdk
- 10/5/2017记录 ubuntu+python+sublime3+插件