首页 > 其他分享 >适配器模式-08

适配器模式-08

时间:2023-06-19 09:56:14浏览次数:38  
标签:适配器 接口 class 模式 08 Adaptee void 结构型

概述

适配器模式 (Adapter Pattern) 将某个类的接口转换成客户希望的另一个接口,使接口不兼容的类也能够一起工作。又称包装器 (Wrapper)。既可以作为类结构型模式,也可以作为对象结构型模式。

优点:目标类和 adaptee 类解耦。提高了类的透明性和可复用性,灵活性和扩展性。
缺点:类结构型,使用有局限性;对象结构型,实现较复杂。

类结构型

class Adaptee {
  void a() {}
  void b() {}
}

interface Target {
  void c();
  void d();
}

class Adapter extends Adaptee implements Target {
  void c() {
    super.a();
  }
  
  void d() {
    super.b();
  }
}

图示:
image

对象结构型

class Adaptee {
  void a() {}
}

abstract class Target {
  void b();
}

class Adapter extends Target {
  Adaptee atee;
  
  void b() {
    atee.a();
  }
}

图示:
image

默认适配器:不想实现接口中全部方法时,可以定义一个实现该接口的抽象类,给出接口中所有方法的默认实现。这个抽象类的子类根据具体需求重写或者不重写超类中的接口方法。

双向适配器:在对象结构型中,如果 adapter 同时有 adaptee 和 target 的实例时,可以在 adaptee 的方法中使用 target 的方法,在 target 的方法中使用 adaptee 的方法。

参考

[1]. 刘伟, 设计模式. 2011.

标签:适配器,接口,class,模式,08,Adaptee,void,结构型
From: https://www.cnblogs.com/xdreamc/p/16461064.html

相关文章

  • 20230426 20. 迭代器模式
    介绍迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式你需要对聚集有多种方式遍历时,可以考虑用迭代器模式。为遍历不同的聚集结构提供......
  • Java Websocket 02: 原生模式通过 Websocket 传输文件
    目录JavaWebsocket01:原生模式Websocket基础通信JavaWebsocket02:原生模式通过Websocket传输文件Websocket原生模式传输文件关于Websocket传输的消息类型,允许的参数包括以下三类以下类型之一,同时只能出现一个文本类型(textmessages)的消息:String......
  • Java Websocket 01: 原生模式 Websocket 基础通信
    目录JavaWebsocket01:原生模式Websocket基础通信JavaWebsocket02:原生模式通过Websocket传输文件Websocket原生模式原生模式下服务端通过@ServerEndpoint实现其对应的@OnOpen,@OnClose,@OnMessage,@OnError方法客户端创建WebSocketClient实现对应的......
  • 单例模式-07
    概述单例模式(SingletonPattern)又称单件模式、单态模式。确保一个类只能有一个实例,同时保证该类的实例只能在类内部创建,提供给整个系统使用。优点:节约系统资源,提高系统性能。缺点:扩展困难,一定程度上违反了“单一职责原则”。classSingleton{privatestaticSingleton......
  • 原型模式-06
    概述原型模式(prototypepattern)是将某个类实例作为原型,对这个原型进行复制得到相同类型的多个实例。优点:当需要创建的类型比较复杂时,使用原型模式可以简化创建过程。缺点:每个类都需要有一个克隆方法,对于深复制比较复杂。Java中,实现Cloneable接口可以使用clone()方法......
  • 2023跟我一起学设计模式:抽象工厂模式( Abstract Factory)
    抽象工厂模式(AbstractFactory)意图抽象工厂模式是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。问题假设你正在开发一款家具商店模拟器。你的代码中包括一些类,用于表示:一系列相关产品,例如椅子Chair、沙发Sofa和咖啡桌Coffee­Table。系列产品的不......
  • 2023跟我一起学设计模式:Golang 抽象工厂模式讲解和代码示例
    Golang抽象工厂模式讲解和代码示例抽象工厂是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。抽象工厂定义了用于创建不同产品的接口,但将实际的创建工作留给了具体工厂类。每个工厂类型都对应一个特定的产品变体。在创建产品时,客户端代码调用的是工厂对象的......
  • Python编程和数据科学中的大数据分析:如何从大量数据中提取有意义的信息和模式
    目录《Python编程和数据科学中的大数据分析:如何从大量数据中提取有意义的信息和模式》引言大数据时代已经来临,随着互联网和物联网的普及,海量数据的产生和存储已经成为一种普遍的现象。这些数据包含各种各样的信息,如文本、图像、音频和视频等,而大数据分析则是将这些海量数据中提......
  • 8086汇编语言基础学习(二)—— 汇编指令和伪指令
    8086汇编语言基础学习(二)——汇编指令和伪指令数据传输指令:1.MOV指令描述:赋值指令格式:MOV DST,SRT功能:双操作数,将SRT赋值给DST注意:DST,SRT不能同时为mem,对于所有的双操作数皆是如此。不允许对CS赋值其中一个是段寄存器时,另一个就必须是数据寄存器将立即数送入mem时......
  • log4cxx的使用模式
    log4cxx的使用模式(金庆的专栏)==初始化配置==Main.cpp中初始化配置.如果不需要监视配置文件并自动重新配置,就不需要调用configureAndWatch().执行目录下的log4j.properties是会自动读取的。#include<log4cxx/propertyconfigurator.h>intma......