• .NET高级面试指南专题二十六【适配器模式介绍,用于将一个类的接口转换成客户端所期待的另一个接口】


    适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期待的另一个接口,使得原本由于接口不兼容而不能在一起工作的类能够协同工作。这种模式通常用于软件系统的升级和重构中,可以使得原有的代码能够与新的接口相兼容,同时不改变原有代码的情况下实现功能的更新和扩展。

    优点:

    • 解耦性增强:适配器模式可以将客户端与目标类解耦,客户端只需要与- 适配器进行交互,而不需要了解具体的目标类。
    • 复用性提高:可以重用已有的类,而不需要修改其源代码,只需要实现一个适配器类即可。
    • 灵活性增强:可以通过不同的适配器实现不同的适配功能,从而满足不同的需求。

    缺点:

    • 增加复杂度:引入适配器会增加代码的复杂度,因为需要额外的类来实现适配器。
    • 可能性能损失:适配器的存在可能会引入一定的性能损失,尤其是在处理大量数据时。

    适用场景:

    • 当需要使用一个已经存在的类,但是其接口与所需接口不兼容时。
    • 当需要创建一个可复用的类,该类能够与多个不兼容的接口一起工作时。
    • 当希望通过某个类来间接地调用另一个类的方法,而且不想直接引用该类的方法时。

    假设有一个旧的接口 IOldInterface,而客户端希望使用新的接口 INewInterface,但两者的方法不兼容,可以通过适配器模式来解决:

    // 旧的接口
    public interface IOldInterface
    {
        void OldMethod();
    }
    
    // 新的接口
    public interface INewInterface
    {
        void NewMethod();
    }
    
    // 旧接口的实现类
    public class OldClass : IOldInterface
    {
        public void OldMethod()
        {
            Console.WriteLine("Old method is called");
        }
    }
    
    // 适配器类,将旧的接口适配成新的接口
    public class Adapter : INewInterface
    {
        private readonly IOldInterface _oldClass;
    
        public Adapter(IOldInterface oldClass)
        {
            _oldClass = oldClass;
        }
    
        public void NewMethod()
        {
            // 在新方法中调用旧接口的方法
            _oldClass.OldMethod();
        }
    }
    
    // 客户端代码
    class Program
    {
        static void Main(string[] args)
        {
            // 创建旧接口的实例
            IOldInterface oldClass = new OldClass();
    
            // 创建适配器,将旧接口适配成新接口
            INewInterface adapter = new Adapter(oldClass);
    
            // 客户端调用新接口的方法
            adapter.NewMethod(); // 实际上调用的是旧接口的方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    Adapter 类充当了适配器的角色,将旧接口 IOldInterface 适配成了新接口 INewInterface,使得客户端可以通过调用新接口的方法来间接调用旧接口的方法。

  • 相关阅读:
    (入门自用)--C++--抽象类--多态原理--虚表--1020
    基于vue天气数据可视化平台
    Ansible 面板工具之AWK ( Anssible Tower )界面介绍
    全面吃透JAVA Stream流操作,让代码更加的优雅
    芯天下在创业板过会:预计全年收入将达到10亿元,净利润约2亿元
    基于微信小程序的土地租赁的设计与实现
    【Redis】Redis 通用命令、键的过期策略
    基于JavaSwing开发网络五子棋游戏(客户端+服务器 聊天 下棋) 课程设计 大作业
    已解决:开机出现Start PXE over ipv4 & ipv6的情况
    RK3568笔记三:部署ResNet50模型
  • 原文地址:https://blog.csdn.net/zuiyuewentian/article/details/138021988