java设计模式学习笔记5 适配器模式几种实现方式
来源:互联网 发布:全局收敛的算法有 编辑:程序博客网 时间:2024/05/26 17:46
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,起到一种适配的作用。
适配器模式的构成:
---目标抽象角色(Target):定义用户需要的特定领域的接口,(用户可以调用的类)
---适配器(Adapter):调用另一接口,作为一个转换器(起到适配的作用,实现Target接口)
---适配器(Adaptee): 定义一个接口,Adapter需要接入(用户最终需要使用的类,类型不匹配,通过Adapter转成我们可以使用的类型即Target)
适配器模式是java中使用广泛的使用模式,有三种实现方式
1,类适配器(采用继承方式)
2,对象适配器(采用对象组合的方式)推荐使用
3,缺省的适配器模式
一、类适配器(继承方式)
编写Taget
/** * Created by charleszhu on 14-2-15. * 目标抽象角色 */public interface Target { public void method();}编写需要使用的Adaptee类
/** * Created by charleszhu on 14-2-15. */public class Adaptee { public void realMethod(){ //最终想要调用的方法 System.out.println("realMethod invoked!!!"); }}
使用继承的方式编写适配器Adapter
/** * Created by charleszhu on 14-2-15. */public class Adapter extends Adaptee implements Target { @Override public void method() { // 因为继承了Adaptee,所以可以用this指向Adaptee对象 this.realMethod(); }}最终便实现了利用Target的method调用realMethod方法
编写测试的Client类
/** * Created by charleszhu on 14-2-15. */public class Client { public static void main(String[] args) { Target target = new Adapter(); target.method(); }}打印结果必然是:realMethod invoked!!!
二、使用对象组合方式
其余实现都是一样的,知识Adapter的不用在继承Adaptee,而是将Adaptee当做他的成员变量之一,通过Adapter的变量进行传参
/** * Created by charleszhu on 14-2-15. */public class Adapter1 implements Target{ private Adaptee adaptee; public Adapter1(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void method() { adaptee.realMethod(); }}只需在测试类的时候传一个new Adaptee()即可;
三、缺省的适配器模式
在awt,swing中使用的颇多,使用适配器空实现鼠标和窗口监听器的接口,之后可以单独调用相关方法。
0 0
- java设计模式学习笔记5 适配器模式几种实现方式
- java设计模式学习笔记-适配器模式
- java设计模式学习笔记--适配器模式
- 学习笔记——JAVA设计模式<5>适配器模式
- java设计模式学习笔记---适配器
- java 设计模式学习笔记(13) - 适配器模式
- java 设计模式学习笔记五Adapter适配器模式
- 设计模式学习笔记---适配器模式adapter(Java版)
- java/android 设计模式学习笔记(6)---适配器模式
- 设计模式学习笔记之适配器模式
- 设计模式学习笔记-适配器模式
- 设计模式学习笔记--适配器(Adapter)模式
- 设计模式学习笔记-适配器模式
- 设计模式学习笔记-适配器模式
- 设计模式学习笔记-适配器模式
- [设计模式学习笔记]Adapter适配器模式
- 设计模式学习笔记十四:适配器模式
- 设计模式学习笔记-适配器模式
- CSS
- __asm__ __volatile__内嵌汇编用法简述
- 黑马程序员--高新技术--代理
- 2014年研究方向
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- java设计模式学习笔记5 适配器模式几种实现方式
- 通过 cmd 建立wifi 热点
- mac下添加swc库文件使用绝对路径
- 1023. Have Fun with Numbers (20)
- Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等
- #ifndef方式 与 #pragma once方式 区别
- Java相对路径/绝对路径总结
- 类名::function()
- 2014-02-15 见闻浅读:软文小技巧