`

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

    博客分类:
  • java
 
阅读更多
  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 XXCircle{ public void setLocationlt(...){...} public ... getLocationlt(){...} 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()...

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

    本文将以追女孩的方式趣味讲解几种常见的设计模式,并通过具体的例子帮助大家理解。 #### 二、设计模式实例讲解 ##### 1. Factory(工厂模式) - **概念**:工厂模式是一种创建型设计模式,它提供的解决方案是...

    Java设计模式之禅

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

    设计模式书记pdf

    根据提供的文件信息,“设计模式书记pdf”是一本详细介绍多种设计模式的书籍,旨在通过形象有趣、生动活泼的方式帮助读者理解和掌握这些模式。接下来,我们将基于这个背景信息来展开相关的知识点。 ### 设计模式...

    .Net设计模式讲解

    .NET设计模式讲解主要涵盖的是软件开发中的一些经典思想和最佳实践,这些模式是经过多年实践提炼出的解决常见问题的有效方案。在.NET框架下,设计模式的应用可以帮助开发者编写更灵活、可扩展和易于维护的代码。以下...

    二十三种设计模式【PDF版】

    之道 》,其中很多观点我看了很受启发,以前我也将"设计模式" 看成一个简单的解决方案,没有从一种高度来看待"设计模式"在软 件中地位,下面是我自己的一些想法: 建筑和软件某些地方是可以来比喻的 特别是中国传统建筑...

    HeadFirst设计模式PPT

    《HeadFirst设计模式》是一本深受开发者欢迎的书籍,它以独特、易理解的方式介绍了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的最佳实践,它们为软件设计提供了可复用的...

    java 设计模式 英文版

    "这部分可能会讲解如何在实际项目中识别和应用设计模式,以及如何结合实际情况选择合适的模式。 接下来的文章将详细展开设计模式的分类: - "模板"(Templates)可能指的是行为设计模式中的Template Method模式,...

    设计模式最简单易懂的教程

    这个教程旨在提供一个简洁易懂的设计模式学习路径,通过简单的例子帮助初学者快速掌握设计模式的核心概念。 在设计模式的世界里,我们可以将其分为三类:创建型模式、结构型模式和行为型模式。创建型模式主要关注...

    [中文]Head-First设计模式

    《Head-First设计模式》是设计模式领域内一本广受欢迎的入门书籍,以其独特的视觉呈现方式和易懂的讲解风格,让初学者也能快速理解并掌握设计模式的精髓。设计模式是软件工程中的一种最佳实践,是解决常见编程问题的...

    head first 设计模式 高清完整版 pdf

    《Head First设计模式》是一本深受开发者喜爱的经典书籍,它以独特、生动的方式讲解了设计模式这一核心的软件工程概念。设计模式是经验丰富的开发者在解决常见问题时总结出的最佳实践,它们为软件设计提供了可复用的...

    设计模式适配器模式讲解

    适配器模式是一种非常实用的设计模式,尤其在需要处理不同接口间转换的问题时。通过引入适配器类,可以有效避免对现有系统的修改,同时提高了系统的可扩展性和灵活性。无论是软件开发还是日常生活中,适配器模式都...

    JAVA23中设计模式

    《JAVA23中设计模式》是一份针对Java程序员的指南,旨在通过一系列示例和理论讲解,帮助读者理解和掌握23种经典的设计模式。这些模式被广泛应用于软件开发中,能够提高代码的可维护性、灵活性和可扩展性。 #### 二...

    设计模式精解-pdf.zip

    在《设计模式精解》这本书中,作者深入浅出地讲解了每一个模式的原理、适用场景、优缺点以及实现方式。通过丰富的例子和实际应用场景,读者能够更好地理解如何在实际项目中应用这些模式。此外,书中可能还会讨论一些...

    您的设计模式

    工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法使类的实例化推迟到子类中进行。 6. 抽象工厂模式(Abstract Factory Pattern) 抽象工厂模式提供一...

    JAVA 设计模式的详细讲解另类解读

    Java设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,旨在提高代码的可重用性、可维护性和灵活性。本主题将深入探讨24种主要的设计模式,以及它们在Java中的另类解读。 首先,设计模式分为...

    深入浅出设计模式之与设计模式相处

    根据提供的标题“深入浅出设计模式之与设计模式相处”以及描述“将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载”,我们可以推测出这部分内容主要关注的是设计模式的基础理论及其...

    Head First设计模式 源代码

    6. **学习方法**:《Head First设计模式》以轻松、非传统的方式讲解复杂概念,通过大量的图表、幽默的插图和实用的例子,让学习过程更加有趣和有效。 7. **面向对象设计原则**:设计模式通常基于一些核心的面向对象...

Global site tag (gtag.js) - Google Analytics