`
newleague
  • 浏览: 1493342 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

java模式学习——适配器模式

阅读更多

某个类拥有我们所需要的功能,但他的方法名却不能满足用户的期望,这时候需要使用适配器模式修改这个现存类和外界交互的接口,从而使其能满足用户的需求。适配器模式的宗旨是:保留现有类提供的服务,修改其接口使其能满足用户的需要。

类适配器:

1 类适配器模式

类适配器模式如图1所示。其中RequiredClass是提供给用户的接口;ExistingClass是已存在实现具体功能的类,但它的方法名称不能满足用户的需求。为此,定义一个NewClass类,使其实现RequiredClass接口并且继承ExistingClass类。同时,在这个新类中重载requiredMethod方法,并在该方法中调用usefulMethod方法进行处理,这样就能够达到利用现有的代码满足用户需求的目的。用户在使用时只需要声明一个NewClass类的对象实例即可。

类适配器实例:

/**

* 定义用户使用接口

 */

public interface RequiredClass{

void requiredMethod ();

}

/**

 * 定义一个已经存在类,它实现了用户所需要的某些功能

*/

public class ExistingClass{

public void usefulMethod () {

       //具体的功能实现.

}

}

/**

 * 定义一个新的类进行适配

 */

public class NewClass extends ExistingClass implements RequiredClass{

    public void requiredMethod () {

       usefulMethod()// 在方法中调用现存类的方法实现用户需要的功能

}

}

对象适配器:

       上面所讲的类适配器是通过创建现存类的子类来达到适配的目的。但该方法并不一定在任何情况下都适用,例如:

1、 有时候,我们可能无法继承这个现存类。

2、  在某些情况下,我们可能需要创建一个适配器以适应多个对象。

3、  有时候,适配的目标不是java接口,而是抽象类。

如果出现以上这三种情况,就无法使用类适配器而必须创建一个对象适配器。

 

2 对象适配器模式

       对象适配器模式如图2所示(在此,针对的是上述的第三种情况,即需要适配的是一个java抽象类,图中的RequiredClass)。此时,仍然是定义一个新类NewClass,该类继承RequiredClass类。但与类适配器不同的是,该类并不继承已存在的类ExistingClass,而是在类中声明现有类的对象实例,使用该对象实例调用现有类中的方法完成用户所需要的功能。

对象适配器实例:

/**

* 定义用户使用接口

 */

public interface RequiredClass{

void requiredMethod ();

}

/**

 * 定义一个已经存在类,它实现了用户所需要的某些功能

*/

public class ExistingClass{

public void usefulMethod () {

       //具体的功能实现.

}

}

/**

 * 定义一个新的类进行适配

 */

public class NewClass extends RequiredClass{

private ExistingClass existing;

public NewClass(ExistingClass existing) {

   super();

     this.existing = existing;

    }

public void requiredMethod () {

       existing.usefulMethod()// 在方法中调用现存类的方法实现用户需要的功能

}

}

 

分享到:
评论

相关推荐

    设计模式——适配器模式(adapter)

    在阅读文章《设计模式——适配器模式(adapter)》时,你可以期待了解到更多关于适配器模式的实战案例、优缺点分析以及如何在实际项目中有效利用这一模式来解决问题。同时,提供的`adapter`压缩包文件可能包含示例...

    设计模式——适配器模式

    通过阅读博客文章《设计模式——适配器模式》(链接:https://wjy320.iteye.com/blog/2042323),我们可以深入了解适配器模式的实现细节,包括具体的代码示例以及在实际项目中的应用案例。这个博客可能会讨论如何在...

    浅析Java设计模式【2】——适配器

    ### 浅析Java设计模式【2】——适配器 #### 概念解析 适配器模式是一种常用的设计模式,其核心在于“适配”二字,即如何将一个类的接口转换成客户希望的另一个接口。该模式使得原本由于接口不兼容而不能一起工作的...

    Java与模式——源码

    《Java与模式——源码》这个主题涉及到的是Java编程语言中的设计模式应用,以及如何通过源代码来理解和学习这些模式。设计模式是软件工程中的一种最佳实践,它们是解决常见问题的经验总结,使得代码更易读、易维护、...

    java设计模式——告诉新手一些不知道的东西

    结构型模式关注如何组合类和对象以形成更大的结构,如适配器模式、装饰器模式和代理模式,它们帮助我们在不同组件之间建立连接,实现类的扩展和接口的增强。行为型模式则关注对象之间的交互和责任分配,如观察者模式...

    设计模式实验报告-适配器模式.docx

    ### 设计模式实验报告——适配器模式 #### 一、引言 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它为解决常见问题提供了一种可复用的设计思路,帮助开发者构建出更加灵活、易于维护的系统。在...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...

    设计模式-Java语言中的应用(pdf)

    通过深入学习《设计模式——Java语言中的应用》,开发者能够更好地理解和应用这些模式,从而编写出更加高效、可扩展的Java程序。无论是初级开发者还是经验丰富的程序员,都应该不断探索和实践设计模式,以提升自己的...

    Java设计模式源代码——自己看pdf写的

    适配器模式使得两个不兼容的接口能够协同工作,Java的`java.lang.Adapter`类就是适配器模式的体现,它允许旧的类库和新的接口一起工作。 10. **职责链模式**: 职责链模式使得多个对象都有机会处理请求,沿着链...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    课后习题参考答案部分涵盖了书中各个章节的关键知识点,包括创建型模式(如单例模式、工厂方法模式、抽象工厂模式)、结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)...

    Java与模式(闫宏)

    2. 结构型模式:适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式。这些模式主要处理类和对象之间的关系,提高代码的可扩展性和模块化。 3. 行为型模式:策略模式、模板方法模式、观察者...

    java编码规范——关于java的命名规则、注视的写法等

    ##### 7.3 适配器模式 允许不兼容的接口之间的类可以一起工作。 ##### 7.4 组合模式 将对象组合成树形结构以表示“部分-整体”的层次结构。 ##### 7.5 外观模式 为子系统中的一组接口提供一个一致的界面。 ###...

    java设计模式

    19.3.3 适配器模式的注意事项 19.4 适配器模式的扩展 19.5 最佳实践 第20章 迭代器模式 20.1 整理项目信息—苦差事 20.2 迭代器模式的定义 20.3 迭代器模式的应用 20.4 最佳实践 第21章 组合模式 21.1 公司的人事...

    Java面试题——重整理版

    Java面试题涵盖了许多Java语言的核心概念,包括J2SE(Java 2 Standard Edition)的基础知识,JSP(Java Server Pages)、Servlet、JDBC(Java Database Connectivity)、JDO(Java Data Objects)、XML、EJB...

    【Java】Callable创建线程用到的适配器模式(csdn)————程序.pdf

    本文将详细解释Callable接口的使用、适配器模式在创建线程中的应用,以及FutureTask在其中的角色。 首先,Callable接口与Runnable接口类似,都是用于创建新线程的接口。但是,Runnable接口的run()方法无返回值,而...

    java面试——深圳-腾讯-Java高级.zip

    工厂模式、单例模式、观察者模式、装饰器模式、适配器模式等23种GOF设计模式,都需要理解其背后的意图和应用场景。 数据库相关知识也很重要,包括SQL查询、事务管理、JDBC操作以及NoSQL数据库的基本概念。了解如何...

    design-pattern-java.pdf

    七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...

Global site tag (gtag.js) - Google Analytics