C# 适配器模式

适配器模式是一种结构型设计模式,它可以将一个或多个不兼容的接口适配成客户端期望的接口。在 C# 中,适配器模式通常采用类适配器或对象适配器的方式实现。

下面是一个简单的类适配器示例:

首先,定义一个客户端期望的目标接口,例如 ICircle:

csharp 复制代码
public interface ICircle
{
    void Draw(int x, int y, int radius);
}

然后,定义一个已有的 Adaptee 类,它具有不兼容的接口:

csharp 复制代码
public class LegacyCircle
{
    public void DrawCircle(int x, int y, int radius)
    {
        Console.WriteLine($"LegacyCircle: x={x}, y={y}, radius={radius}");
    }
}

接着,定义一个适配器类 Adapter,它继承于 Adaptee 类,并同时实现了目标接口 ICircle:

csharp 复制代码
public class CircleAdapter : LegacyCircle, ICircle
{
    public void Draw(int x, int y, int radius)
    {
        DrawCircle(x, y, radius);
    }
}

最后,在客户端中使用适配器来实现目标接口:

csharp 复制代码
public class Program
{
    public static void Main(string[] args)
    {
        ICircle circle = new CircleAdapter();
        circle.Draw(10, 10, 20);
    }
}

在这个示例中,适配器 CircleAdapter 继承了 Adaptee 类,同时实现了目标接口 ICircle。这样一来,客户端就可以使用目标接口 ICircle 来调用适配器的方法 Draw(),适配器再调用 Adaptee 类的方法 DrawCircle() 来实现绘制圆形的功能。适配器模式将已有的类和接口适配到了客户端所期望的接口,并实现了代码的重用和扩展。

相关推荐
漂亮的小碎步丶1 分钟前
【4】Spring Boot项目中Spring核心容器原理详解
java·后端·spring
过期动态2 分钟前
JDBC进阶篇:拓展功能与连接池运用详解
java·开发语言·数据库·mysql·oracle·intellij-idea·mybatis
applebomb2 分钟前
经济、能打的vibe coding后端组合:IDEA+Claude Code(WSL)+GLM4.6安装与配置
java·idea·ai编程·vibecoding
布伦鸽3 分钟前
C# WPF -MaterialDesignTheme 找不到资源“xxx“问题记录
开发语言·c#·wpf
唐青枫8 分钟前
C#.NET ref struct 深度解析:语义、限制与最佳实践
c#·.net
❥ღ Komo·2 小时前
K8s服务发现与DNS解析全解析
java·开发语言
FuckPatience2 小时前
C# 项目调试的时候进不去断点
开发语言·c#
元亓亓亓2 小时前
考研408--组成原理--day8--汇编指令&不同语句的机器级表示
开发语言·汇编·c#
g***B7384 小时前
Java 工程复杂性的真正来源:从语言设计到现代架构的全链路解析
java·人工智能·架构
期待のcode6 小时前
MyBatisX插件
java·数据库·后端·mybatis·springboot