`

适配器式设计模式

 
阅读更多

                                               适配器式设计模式

           

  

       

适配器模式

Adapter(别名Wrapper)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。

 

要点:

1. 适配器模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

2. 适配器模式有对象适配器和类适配器两种形式的实现结构,但是类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。

 

实现:

clip_image002

类的适配器模式结构图(继承)

clip_image004

 

对象的适配器模式结构图(组合)

(对象适配器的代码实现)

Target:定义Client使用的与特定领域相关的接口

public interface Target 
{
    void request();
}

 

Adaptee:现在需要适配的已经存在的接口

public class Adaptee
{
    public void specificRequest(){}
}

 

Adapter:对Adaptee 的接口与Target接口进行适配

public class Adapter implements Target
{
    public Adapter(Adaptee adaptee)
    {
        super();
        this.adaptee = adaptee;
    }

    public void request()
    {
        adaptee.specificRequest();
    }

    private Adaptee adaptee;
}

 

适用性:

1. 系统需要使用现有的类,而此类的接口不符合系统的需要。

2. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。

3. (对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。

 

效果及优缺点:

对于类适配器:

1. 用一个具体的Adapter类对Adaptee和Taget进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。

2. 使得Adapter可以override(重定义) Adaptee的部分行为,因为Adapter是Adaptee的一个子类。

对于对象适配器:

1. 允许一个Adapter与多个Adaptee,即Adaptee本身以及它的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的Adaptee添加功能。

2. 使得override(重定义)Adaptee的行为比较困难。如果一定要override Adaptee的方法,就只好先做一个Adaptee的子类以override Adaptee的方法,然后再把这个子类当作真正的Adaptee源进行适配。

  • 大小: 8.7 KB
分享到:
评论

相关推荐

    设计模式:创建型之原型(深浅拷贝)、单例(饿汉式与懒汉式),三大工厂模式 结构型之适配器模式,代理模式(三大代理)

    设计模式是一种用于解决常见软件设计问题的模板,它们是经验丰富的软件工程师在长时间开发中总结出来的最佳实践。设计模式可以分为创建型、结构型和行为型三类,每类都包含多种特定的设计模式,旨在解决特定类型的...

    javaweb项目+设计模式(单例模式,工厂模式,动态代理,适配器)

    本项目涵盖了四种常见的设计模式:单例模式、工厂模式、动态代理和适配器模式。下面将详细阐述这四种设计模式的概念、作用以及在实际项目中的应用。 **1. 单例模式** 单例模式是一种限制类实例化次数为一个的设计...

    js设计模式详解和 函数式编程PDF

    JavaScript设计模式详解与函数式编程是开发者提升代码质量和可维护性的重要工具。设计模式是对在软件设计中经常出现的问题和解决方案的一种模式化描述,而函数式编程则是一种编程范式,强调程序数据的不可变性和函数...

    设计模式——刘伟

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...

    深入浅出java设计模式(高清中文PDF)

    《深入浅出Java设计模式》是一本专注于Java编程领域中的设计模式专著,旨在帮助开发者深化对设计模式的理解,提高代码质量和可维护性。设计模式是软件开发中经过时间检验的解决方案,它们是解决常见问题的最佳实践。...

    网页设计专用调色适配器

    3. **响应式设计**:随着移动设备的普及,设计师需要考虑颜色在不同屏幕尺寸和分辨率下的显示效果。调色适配器可能包含设备模拟器,允许设计师预览在手机、平板电脑等设备上的颜色表现。 4. **色彩适配与主题**:...

    超薄型65_W笔记本适配器_参考设计

    笔记本适配器是一种将交流电转换为直流电的电源设备,主要用于为笔记本电脑等便携式电子设备供电。本篇参考设计针对一款超薄型65瓦(W)的笔记本适配器,详细介绍了该适配器的原理和构造,以下是相关知识点的详细...

    软件设计 模式PDF

    有时,还会引入一些新的概念,比如模版方法模式在函数式编程中的应用,以及如何将设计模式与框架如Spring进行融合。 《软件设计模式》不仅是软件开发新手的重要教材,它同样对经验丰富的开发者具有参考价值。掌握...

    java中常用设计模式总结心得

    9. **适配器模式**:适配器模式是一种结构型设计模式,它可以使两个不兼容的接口协同工作。适配器将一个类的接口转换成客户希望的另一个接口。 10. **模板方法模式**:行为型设计模式,定义一个操作中的算法骨架,...

    head first 设计模式,英文版

    在阅读《Head First设计模式》这本书时,你会通过丰富的图表、幽默的插图和互动式的教学方式来学习这些模式。书中的每个模式都以易于理解的方式进行讲解,通过实际的例子和场景来阐述其工作原理和应用场合。 学习...

    软件设计模式与体系结构(4)多种模式的代码.rar

    在软件开发领域,设计模式和体系结构是两个至关重要的概念,它们构成了复杂系统的基础和蓝图。本资源聚焦于“软件设计模式与体系结构”,特别是针对Java编程语言的应用,旨在为学习者提供一个全面复习和考研准备的...

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

    设计模式之 Adapter(适配器) 使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 ...

    ActionScript 3.0设计模式源码

    **ActionScript 3.0 设计模式源码详解** 在软件开发中,设计模式是一种解决常见问题的经验总结,它提供了一种在特定上下文中高效、可重用的解决方案。ActionScript 3.0(AS3)是Adobe Flash Platform的主要编程语言...

    设计模式 设计模式 PDF

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题...同时,随着技术的发展,新的设计模式和理念不断涌现,如反应式设计模式、微服务架构模式等,持续学习和适应这些新趋势也是保持专业竞争力的关键。

    Java设计模式(影印版)

    适配器模式是一种结构型设计模式,它允许不兼容的接口协同工作。在Java中,适配器模式可以通过实现适配器类来实现,这个类将一个接口转换为另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。...

    函数式编程中的设计模式.pdf

    它提到,虽然许多OO设计模式在FP中也有实现,例如工厂函数(Factory Functions)、适配器模式(Adapter)、装饰器函数(Decorator Functions)、迭代器模式(Iterator Pattern)、策略模式(Strategy)、外观模式...

    设计模式复习题.doc

    "设计模式复习题.doc" 以下是根据给定文件生成的相关知识点: 1. 设计模式的种类: - 工厂方法模式 - 抽象工厂模式 - 单件模式 - 组合模式 - 外观模式 - 观察者模式 - 模板方法模式 - 迭代器模式 - 代理...

    C#设计模式(PDF)

    而委托(Delegate)和事件(Event)机制则天然契合观察者模式,使得异步编程和响应式设计更为便捷。 此外,这本书可能还会涵盖一些现代设计原则和实践,如SOLID原则(单一职责原则、开闭原则、里氏替换原则、接口...

    《Head.First设计模式》书中源代码(Java语言)

    这本书通过实例和互动式的学习方法,深入浅出地讲解了23种经典的设计模式。源代码作为理论知识的实践部分,对于理解和掌握设计模式至关重要。 在Java编程中,设计模式是一种解决常见软件设计问题的经验总结,是经过...

Global site tag (gtag.js) - Google Analytics