`

Adapter设计模式的学习

阅读更多

GOF《设计模式》一书对Adapter模式是这样描述的:
  
 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。

图解 :


 


    这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:

1) 为都有“显示”(display)行为的点、线、正方形分别创建类。

2) 客户对象不必知道自己到底拥有点、线、还是正方形。它只需知道拥有这些形状中的一个。

也就是说,我们要用一个更高层次的概念将这些具体形状都涵盖进去,这个高层概念可以称为:“可显示的形状”。因此,我们需要创建一个接口Shape:

interface Shape{

    publicvoid display();

}

现在客户忽然间有让我们给这个系统增加一个画圆的功能。这个看起来很简单,只需定义一个Circle类来实现Shape接口,但是我们要给它编写display方法,这可不是件简单的事,假如此时我们正好发现一个XXCircle类,它有一个方法刚好可以完成这个功能,那么有没有更好的方法来利用它呢,这时我们就要用到Adapter模式了。XXCircle代码如下:

class XXCircle{

    public void displayCircle(){

       System.out.println("通过XXCircle.displayCircle()画圆");

    }

}

    Adapter模式有两种类型:

1)    对象Adapter模式,它依赖于一个对象(适配器)包含另一个对象(被适配的对象)

class CircleObject implements Shape{

    public XXCircle circle;

    public CircleObject(XXCircle xxcircle){

    circle=xxcircle;

    }

    public void display() {

       circle.displayCircle(); 

    }

}

public class Client {

    public static void main(String[] args) {

       XXCircle circle=new XXCircle();

       CircleObject co=new CircleObject(circle);

       co.display();

    }

}

2)     类Adapter模式,它是通过多重继承来实现的(java中没有多继承,是通过接口来实现的)。

class CircleClass extends XXCircle implements Shape{

    public void display() {

       super.displayCircle();  

    }

}

public class Client {

    public static void main(String[] args) {

       CircleClass cc=new CircleClass();

       cc.display();

    }

}

    小结:Adapter模式是一个很常用的模式,它将一个(或多个)类的接口转换成我们需要类所具备的一个接口。它的实现方式是:创建一个具备所需接口的类,然后包装原有类的方法,这样实际上就包含了被适配的对象。它主要适用于以下几种情况:

1) 你希望使用他人编写的子程序或方法,因为你需要它所执行的功能。

2) 你无法将这个子程序直接加入程序中。

3) 子程序的接口或调用方式与需要使用它的相关对象不完全相同。


々上善若水々 2008-05-23 15:00 发表评论
分享到:
评论

相关推荐

    设计模式1,FACADE模式,Adapter

    学习设计模式能带来诸多好处,如复用成熟的解决方案,提高团队沟通效率,提升设计质量,增强代码的可维护性。同时,设计模式也是一种通用的术语,使得开发者能用共同的语言讨论和分析设计问题。 在实际应用中,...

    24种设计模式以及混合设计模式

    通过学习和应用这些设计模式,开发者不仅可以提高代码的可读性、可维护性和可扩展性,还能提升团队间的沟通效率,因为设计模式是软件工程中的通用语言。对于任何有志于提升软件开发水平的人来说,理解和掌握设计模式...

    设计模式学习笔记大全

    以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    设计模式学习系列2设计模式影印版

    《设计模式学习系列2设计模式影印版》作为一套学习资料,专注于介绍设计模式的核心理念与实践应用,为读者提供了一个系统性的学习框架。 设计模式主要分为三类:创建型模式、结构型模式和行为型模式。其中,创建型...

    C++的设计模式学习资料

    ### C++的设计模式学习资料详解 #### 一、引言 设计模式是在软件工程领域内广泛应用的一种编程思想,它能够帮助开发者解决常见的设计问题,并提供一套标准的解决方案。设计模式通常分为三大类:创建型模式、结构型...

    Head First 设计模式 (七) 适配器模式(Adapter pattern) C++实现

    适配器模式(Adapter pattern)是软件设计模式中的一种,其主要目的是解决系统间接口不兼容的问题,使得原本无法直接协作的类或者组件能够协同工作。在“Head First 设计模式”这本书中,适配器模式被深入浅出地讲解...

    23种面向对象设计模式

    文档中的“23种设计模式学习笔记.doc”可能包含了对这23种模式的详细解释和实例,而“设计模式之我爱我家.doc”可能从一个更生活化的角度来阐述设计模式的概念。“软件23种设计模式,超级经典的.pdf”可能是对这些...

    java设计模式中英文各种版本打包下载 学习设计模式必备材料

    Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的模板。这些模式来自于经验丰富的...这个压缩包中的各种版本的资源,无论是中文还是英文,都能为你的设计模式学习提供宝贵的资料。

    设计模式那点事

    《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、分类以及它们在实际开发中的应用。 首先,设计模式基于面向对象编程思想,其核心目标是...

    C++设计模式学习框架

    "C++设计模式学习框架"是一个专为学习和实践这些模式而构建的资源集合,它涵盖了各种常见的设计模式,帮助开发者深入理解并熟练应用到实际项目中。 设计模式通常分为三类:创建型模式(Creational Patterns)、结构...

    设计模式C++学习之适配器模式(Adapter)

    适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们复用现有的类,或者将第三方库的接口与我们的系统接口进行对接,从而提高代码的可...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    设计模式的学习过程通常分为四个阶段:学习、表达、教授、记录。每个阶段都需要不同的技能和深度的理解。 #### 0.2 设计模式解析后记 在完成所有设计模式的学习和解析之后,开发者会发现自己已经进入了一个新的...

    设计模式 学习伴侣 head first

    在学习过程中,配合《HeadFirst设计模式学习伴侣.jpg》这样的图片资料,可以更好地理解书中的实例和示意图,加深对设计模式本质的理解。这本书不仅适合初学者,也适合有一定经验的开发者用来巩固和提升设计能力。...

    C#设计模式例程大全,面向对象设计模式学习新手必备,超级有用

    本资源包"Design-Pattern-master"显然是一份全面介绍C#设计模式的实例教程,对于初学者来说是极具价值的学习资料。 首先,让我们从标题开始,"C#设计模式例程大全"表明这个资源包包含了一系列C#语言实现的设计模式...

    head first设计模式学习代码

    《Head First设计模式学习代码详解》 设计模式是软件工程中的宝贵经验总结,它提供了一套通用的解决方案模板,帮助开发者在面对复杂问题时能够快速有效地进行设计和开发。Head First设计模式是一本非常受欢迎的设计...

    《Java设计模式》课后答案-刘伟.rar

    结构型设计模式包括适配器(Adapter)、桥接(Bridge)、装饰(Decorator)、外观(Facade)、享元(Flyweight)、组合(Composite)和代理(Proxy)。这些模式帮助我们更好地组织类和对象之间的关系,实现松耦合,...

    C++设计模式代码资源16_Adapter.zip

    《C++设计模式:Adapter模式解析与应用》 在软件工程中,设计模式是一种解决常见问题...通过C++设计模式代码资源16_Adapter.zip,开发者可以学习到Adapter模式的理论知识和实践经验,为今后的软件开发提供强大的支持。

    C#设计模式PDF 电子书

    《C#设计模式PDF 电子书》是一本专注于C#编程语言中设计模式的应用和解析的书籍,2005年04版意味着它在设计模式领域的应用尚处于早期阶段,但仍然具有很高的学习价值。设计模式是软件工程中经过实践验证的、解决常见...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    学习设计模式对于软件开发人员来说至关重要,主要基于以下几点理由: - **经验借鉴**:设计模式是基于众多专家的经验和智慧,提供了经过实践检验的解决方案。 - **提高可维护性和可复用性**:通过遵循已知的最佳...

Global site tag (gtag.js) - Google Analytics