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

适配器模式

时间:2023-07-22 21:47:20浏览次数:32  
标签:适配器 接口 Adaptee adaptee 模式 兼容 public

适配器模式(Adapter Pattern)说白了就是把一个接口实现类转换成另外一个接口对象。先看代码:

 1 // 目标接口
 2 public interface ITarget
 3 {
 4     void Request();
 5 }
 6 
 7 // 原本不兼容的类
 8 public class Adaptee
 9 {
10     public void SpecificRequest()
11     {
12         Console.WriteLine("Adaptee's specific request.");
13     }
14 }
15 
16 // 适配器类
17 public class Adapter : ITarget
18 {
19     private readonly Adaptee adaptee;
20 
21     public Adapter(Adaptee adaptee)
22     {
23         this.adaptee = adaptee;
24     }
25 
26     public void Request()
27     {
28         // 通过适配器调用原本不兼容类的方法
29         adaptee.SpecificRequest();
30     }
31 }
32 
33 // 客户端代码
34 public class Client
35 {
36     public static void Main(string[] args)
37     {
38         Adaptee adaptee = new Adaptee();
39         ITarget target = new Adapter(adaptee);
40 
41         target.Request(); // 输出:"Adaptee's specific request."
42     }
43 }

八股:

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端期望的另一个接口,从而使得原本不兼容的类能够一起工作。适配器模式可以解决不同接口之间的兼容性问题,使得不需要修改现有代码就可以让多个类协同工作。

适配器模式中包含三种主要角色:

  1. 目标接口(Target):目标接口是客户端期望的接口,适配器类将原本不兼容的类转换成这个目标接口。

  2. 适配器类(Adapter):适配器类实现目标接口,并包含一个对原本不兼容类的引用,通过适配器类的方法调用原本不兼容类的方法,从而实现目标接口。

  3. 原本不兼容的类(Adaptee):原本不兼容的类是客户端需要使用的类,但它的接口与目标接口不兼容。

适配器模式的核心思想是通过适配器类将原本不兼容的类进行包装,使得它们能够在目标接口下工作。这样,客户端就可以通过目标接口来调用原本不兼容类的方法,而不需要关心实际的实现细节。

 

标签:适配器,接口,Adaptee,adaptee,模式,兼容,public
From: https://www.cnblogs.com/yanyuge/p/17574305.html

相关文章

  • 设计模式之状态模式
    假设我们正在开发一个网络下载器应用,该应用有不同的下载状态,包括未下载状态、下载中状态、下载完成状态和下载失败状态。我们可以使用状态模式来管理下载器的状态和行为。要是不用状态模式,这还真的就乱套了!看下代码吧。1//抽象状态类-下载状态2publicabstractclas......
  • 设计模式之装饰器模式
    装饰器模式是一种结构型设计模式,它允许动态地为对象添加新的行为,同时不改变其结构。通过将对象包裹在一个装饰器中,可以在运行时为对象添加额外的功能。在装饰器模式中,有四个主要角色:抽象组件(Component):定义了被装饰对象的接口,是装饰器和被装饰对象的共同基类或接口。它声明了一组......
  • Centos 7 单用户模式修改密码/配置
    1、启动系统,启动项界面显示时,按“↑↓”键停留在此界面,按下“e”键进入编辑模式2、利用“↑↓”键找到“linux16”开头的那段,去掉“rhgb”和“quiet”参数,并在“UTF-8”之后添加“init=/bin/sh”3、修改后,按“Ctrl+X”重启系统4、修改根目录的修改权限,并重新挂载(默认只读,不......
  • redis主从模式修改密码
    Redis主从模式修改密码概述在Redis主从模式中,需要修改密码时,需要在主节点上修改密码,并且同步到所有的从节点上。下面将详细介绍如何实现这个过程。修改密码流程下面是修改Redis主从模式密码的流程:步骤描述步骤1连接到主节点步骤2修改主节点密码步骤3获取从......
  • 建造者模式
    建造者模式一场景    在软件开发中,我们有时候会创建一些复杂的对象,这些对象有着复杂的内部结构,它们都是有一系列部件组成。这些部件相互依赖,而且部件的构建通常面临着复杂的变化。我们需要先按照一定的顺序来创建各个部件,最后将这些部件组装成一个完整的对象。  ......
  • Unity编辑模式 一键获取Tilemap的格子信息
    动机由于地图是使用unitytilemap编辑的,服务端也希望获取一份相关的信息。相较于自己写个编辑器,直接利用unity的能力会更加敏捷。效果展示只需要将组件拖拽到含有Tilemap组件的GameObj上面,就可以点击按钮,获取格子信息。源码展示[CustomEditor(typeof(TilemapTool))][CanEdi......
  • ofstream 追加模式
    #includeusingnamespacestd;intmain(){ofstreamoutfile("example.txt",ios::app);if(outfile.is_open()){outfile<<"Thisisanewline.\n";outfile.close();}elsecout<<"Una......
  • 修改MySQL读写模式
    修改MySQL读写模式MySQL是一个开源的关系型数据库管理系统,广泛应用于互联网应用和企业级应用中。在MySQL中,存在着读写模式的设置,可以根据实际需求来调整数据库的读写性能和一致性。本文将介绍如何修改MySQL的读写模式,并提供代码示例。1.了解MySQL读写模式在MySQL中,有两种常见的......
  • OO 设计模式
    面向对象(ObjectOriented-OO)设计模式(DesignPattern)概念、设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结3个大类,23个设计模式、创建型模式:对象实例化的模式单例模式:确保某一个类只有一个实例,并且提供一个全局访问点简单工厂模式:让子类......
  • Spring框架的设计理念与设计模式(4)-Context组件
    关键词:Context,组件,Spring,BeanFactory,容器,Ioc上一章:[b]Spring框架的设计理念与设计模式(3)-Bean组件[/b][url]http://javapub.iteye.com/blog/751550[/url]下一章:[b]Spring框架的设计理念与设计模式(5)-Core组件[/b][url]http://javapub.iteye.com/......