理解设计模式(适配器)

  适配器模式,转换不同接口,实现兼容。

特定环境

  • 接口兼容
    —使用现有类,但使用方式与原有方式不同,需要转换
    —现有接口兼容第三方组件
    —保留并使用原系统类的功能,但客户端访问方式发生变化,同时无法修改原有代码时
  • 相近功能类间的转换

一类问题

接口不兼容的类,不能协同合作

解决方案

3个角色:

  • 目标接口 Target : 提供期待的使用方式,由类或接口实现
  • 被适配者 Adaptee : 类原有使用方式,由类或接口实现
  • 适配器 Adapter : 封装Adaptee引用,实现或继承Target,重写Target方法,封装Adaptee方法

类适配器和对象适配器

类适配器通过多重继承,来对接口进行匹配

Java不支持多重继承,暂不作讨论

优劣

优点:

  • 复用类,减少开发量
  • 可扩展原有类功能
  • 可通过目标接口,使用多个被适配者
  • 被适配者对接口使用者透明
  • 目标接口和被适配者解耦

缺点:
对于对象适配器,适配器的编写或修改,较为复杂

因为,需要原系统提供接口(即被适配者的API),并需要理解其适用环境

参考

设计模式学习笔记-适配器模式, 作者: Wang Juqiang

时间: 2024-08-03 18:13:44

理解设计模式(适配器)的相关文章

Asp.net设计模式笔记之一:理解设计模式

GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral).下面来做详细的剖析. 创建型 创建型模式处理对象构造和引用.他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任放在一个地方,这遵循了单一责任原则和分离关注点原则. 下面是“创建型”分组中的模式: 1.Abstract Factory(抽象工厂)模式:提供一个接口来创建一组相关的对象. 2.Factory Met

深入理解设计模式---系列目录

一.创建型模式 深入理解设计模式(一):单例模式(Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点. 深入理解设计模式(二):简单工厂模式(factory method pattern): 实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 深入理解设计模式(四):工厂方法模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例

设计模式——适配器

又分为三种: 类的适配器模式: package designpattern.structure.adapter.classadapter; public interface ITarget { public void method1(); public void method2(); } package designpattern.structure.adapter.classadapter; public class Source { public void method1() { Syste

换种思路去理解设计模式(下)

开写之前,先把前两部分的链接贴上.要看此篇,不许按顺序看完前两部分,因为这本来就是一篇文章,只不过内容较多,分开写的. 换种思路去理解设计模式(上) 换种思路去理解设计模式(中) 8       对象行为与操作对象 8.1     过程描述 所谓对象行为和操作对象,需要三方面内容: l  操作过程: 一般表现为一个方法.该方法接收一个对象或者组合类型的参数,然后对这个对象或者组合进行操作,例如修改属性.状态或者结构等. l  操作的对象或组合: 会作为实参传入操作过程,会被操作过程修改属性.状态

深入理解设计模式(终):总结--设计模式是药,没病就不要吃药

系列链接地址: 深入理解设计模式---系列目录 一.产品汪的神助攻,代码狗的安慰剂 定义:设计模式,指的是一个场景(context)下的一种解决方法(Solution),只要大家都认可某种模式,那么就只需要很短的一个名字,就可以代替很多很多的语言和文字交流,如果你觉得设计模式降低生产效率,那只能说你在这一行还要继续修炼. 宗旨:保证系统的低耦合高内聚,指导它们的原则无非就是封装变化,责任单一,面向接口编程等设计原则 目的:就是为了让代码变得更容易理解和维护 精髓:将复杂的逻辑抽离出来,让开发人员

深入理解设计模式六大原则

深入理解设计模式六大原则 万变不离其宗,不管是Java还是C++,凡是面向对象的编程语言,在设计上,尽管表现形式可能有所不同,但是其实质和所需遵守的原则都是一致的.本文便是带领读者去深入理解设计模式中的六大原则,以期帮助读者做出更好的设计. 单一职责原则 单一职责原则:Single Responsibility Principle,简称SRP 定义: 应该有且仅有一个原因引起类的变更. 问题场景: 类C负责两个不同的职责:职责D1,职责D2.当由于职责D1需求发生改变而需要修改类C时,有可能会导

ABAP设计模式——适配器

计算机科学中的大多数问题都可以通过增加一层间接性来解决.  ——David Wheeler 适配器模式(Adapter Design Pattern),是一个广泛应用于真实世界和面向对象编程语言的设计模式.基于面向对象的标准SAP程序中同样很多地使用了适配器模式. 适配器是什么? 适配器把因为不同的“接口”而不兼容的对象转换(为兼容的).通过实现适配器,我们可以让一些原本不能共同工作的类共同工作. 有时,我们有一个客户端,它希望对象只有一个确定的接口.还有一个对象,他能满足功能上的要求,但是两个

iOS设计模式 - 适配器

效果 说明 1. 为了让客户端尽可能的通用,我们使用适配器模式来隔离客户端与外部参数的联系,只让客户端与适配器通信. 2. 本教程实现了适配器模式的类适配器与对象适配器两种模式,各有优缺点. 3. 如果对面向对象基本原理以及设计模式基本原理不熟悉,本教程会变得难以理解. 源码 https://github.com/YouXianMing/AdapterPattern // // BusinessCardView.h // Adapter // // Created by YouXianMing

swift 之设计模式 适配器

大学的时候,有一个<近世代数>的教授,他上课从来不看课本,并且也不按课本来讲解课程,但是他讲的东西比书本深刻形象(幽默,口才杠杠的),有层次感,除了授业,他还经常给我讲一些为人处世,做学问的方法[他是我尊敬的老师之一].  学过这门课的人都知道这门课全是理论,群论,环,域等,各种理论证明,各种装逼各种飞.  现在课本上的还回去的基本上还回去了,留下更多的就是他给我讲的一些方法,在这里引入一下: 掌握一个新概念: 1. 背景引入,为什么会有这个概念产生 2. 是什么?拆分概念的各种条件,名词,结