`
iseesea
  • 浏览: 46242 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

一个例子讲解adapter设计模式(灰常简单)

阅读更多
《非原创转自:http://www.java3z.com/cwbwebhome/article/article2/2888.html》
Adapter模式,中文解释为适配器模式,那什么是Adapter模式那?我们先来看看GOF的《设计模式》是如何解释的:

    将一个类的接口转换成客户希望的另外一个接口,Adapter使原本由于接口不兼容而不能一起工作的类可以一起工作。

     是不是觉得很拗口,有点不知所挫?我们再来看看《设计模式解析》上的解释:

    我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。

     这句话可能不像刚才那么拗口,但初学者可能任然有点云里雾里,那我们就用一个实例来完整的解释一下Adapter模式:

首先,假设我们在设计一个关于形状的程序(这也是Thinking in Java常用的例子),我们首先要创建一个父类:

class Shape{
 public void setLocation(...){}
 public ... getLocation(){}
 public void display(){}
 ......
}


然后,我们有3个类分别为:点类,线类,矩形类都继承自父类:

class Point extends Shape{
 public void setLocation(...){...}
 public ... getLocation(){...}
 public void display(){...}
 ...
}

class Line extends Shape{
 public void setLocation(...){...}
 public ... getLocation(){...}
 public void display(){...}
 ...
}

class Square extends Shape{
 public void setLocation(...){...}
 public ... getLocation(){...}
 public void display(){...}
 ...
}


    好了,现在我想再创建一个椭圆类,肯能你会说:“简单,像上面一样创建一个类然后继承Shape类不就好了吗”。但是现在现成的椭圆类我已经有了,代码如下:

class [color=red]XX[/color]Circle{
 public void setLocation[color=red]lt[/color](...){...}
 public ... getLocation[color=red]lt[/color](){...}
 public void displaylt(){...}
 ...
}


    现在我虽然有一个XXCircle类,但它并不继承自 Shape类,虽然它里面的方法内容是我想要的,但方法名却和我定义的方法名却有些出入(注意红色字体),你可能已经迫不及待的想把方法中的内容一个一个麻烦的复制粘贴到自己的Circle类中了,不用急,让我们来看看Adapter模式是如何帮我们设计Circle类的吧:

class Circle extends Shape{
 private XXCircle myXXCircle;
 public Circle(){
  myXXCircle=new XXCircle();
 }
 public void setLocation(...){
  myXXCircle.setLocationlt(...);
 }
 public ... getLocation(){
  myXXCircle.getLocationlt();
 }
 public void display(){
  myXXCircle.displaylt();
 }
 ...
}

     看到了吧,我们只需将XXCircle类包装起来就可以将代码进行重用,虽然现成的XXCircle类在接口上可能不合,但它的功能是我们需要的,利用Adapter模式我们就能很好的利用它了。(在结束之前,请再看一下本文最上面的红体字,现在你能明白大师们对Adapter模式的解释了吗?)
分享到:
评论

相关推荐

    设计模式之Adapter模式和代码实现

    在本文中,我们通过一个形如"形状"的范例来讲解Adapter模式的概念和实现。 首先,我们有一个抽象基类`Shape`,它定义了一个`Draw()`方法,用于在屏幕上绘制图形。`Square`和`Circle`类继承自`Shape`并实现了`Draw()...

    设计模式1,FACADE模式,Adapter

    首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需了解子系统内部的复杂性。通过创建一个外观类,对外暴露统一的操作,隐藏子系统组件间的交互细节。这样...

    设计模式之 适配器 Adapter C++ 源码

    设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...

    设计模式中的适配器设计模式

    java中的适配器模式,Adapter设计模式(包装器)23种设计模式之一

    ②设计模式之Adapter模式

    在"entrust"这个例子中,可能涉及到委托或者代理的概念,这与Adapter模式有相似之处,都是通过一个中间对象来处理通信。在Adapter模式中,适配器是委托者,它负责转发请求给适配的对象。 "extend"这个文件名可能...

    JAVA的16种设计模式的详细讲解

    9. 适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口,使得原本因接口不兼容而不能一起工作的那些类能一起工作。 10. 桥接模式(Bridge):将抽象部分与实现部分分离,使得它们可以独立变化。 11...

    C#语言讲解的设计模式好书

    《C#语言讲解的设计模式好书》是一套深入探讨C#设计模式的资源集合,包含多本电子书和代码示例。这套资料旨在帮助开发者理解并掌握如何在C#编程中应用设计模式,以提高软件的可维护性、扩展性和复用性。以下是这些...

    设计模式例子文档,简单易学

    这份名为"设计模式例子文档,简单易学"的资源,显然是为了帮助开发者更直观、更快速地理解和应用设计模式。设计模式并非具体的代码或库,而是一种通用的解决方案模板,可以在不同的软件开发过程中复用,以提高代码的...

    JavaScript设计模式与开发实践.pdf

    第二部分是核心部分,通过一步步完善的代码示例,由浅入深地讲解了16个设计模式,包括 singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、...

    1-7Adapter基础讲解

    在IT行业中,Adapter模式是一种设计模式,它在不同的接口之间起着桥梁的作用,允许不兼容的类协同工作。本主题将深入探讨Adapter的基础知识,帮助你理解其原理、应用场景及实现方式。 Adapter模式的主要作用是解决...

    设计模式 含代码及讲解

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。设计模式并不是具体的代码或库...设计模式的学习是一个持续的过程,随着经验的积累,你会更加熟练地在合适的情境中选择和应用它们。

    各个版本的 设计模式 带例子

    - **适配器模式(Adapter)**:将一个类的接口转换成客户希望的另一个接口。适配器使原本不兼容的类可以一起工作。 - **桥接模式(Bridge)**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 - **装饰...

    GOF23设计模式讲解及C++源代码实现

    2. 结构型模式(Structural Patterns):包括适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)。...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    Java 设计模式 之 现实实例讲解

    - **概念**:单例模式是一种创建型设计模式,它保证一个类仅有一个实例,并提供一个全局访问点。 - **应用场景**:如果你是女孩唯一的男朋友,那么不论女孩何时提到“男朋友”,她指的都是你,你是唯一的。这里你...

    设计模式例子和PPT

    - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):...

    设计模式-讲解,汇总了一个demo

    本项目“设计模式-讲解”是一个汇总了多种设计模式的实践demo,旨在帮助开发者更好地理解和运用设计模式,提升代码的可读性、可维护性和可扩展性。 首先,我们要理解设计模式的基本分类。设计模式通常分为三类:...

Global site tag (gtag.js) - Google Analytics