适配器模式

使用场景

已经部署的项目,无法解决新需求。目的是能让两个没有任何联系的类,能够一起工作。

image

image

实现

/// <summary>
/// 图片上传接口
/// </summary>
interface IPictureUploadService
{
    public void UploadPicture(string pictureType, string pictureName);
}
/// <summary>
/// 图片上传服务
/// </summary>
class PictureUploadService : IPictureUploadService
{
    // 1、依赖图片适配器
    private PictureUploadServiceAdpater pictureUploadServiceAdpater = new();

    /// <summary>
    /// 上传图片
    /// </summary>
    /// <param name="pictureType"></param>
    /// <param name="pictureName"></param>
    public void UploadPicture(string pictureType, string pictureName)
    {
        if (pictureType.Equals("jpg"))
        {
            Console.WriteLine($"图片名称:{pictureName},上传成功");
        }
        else if (pictureType.Equals("mp4"))
        {
            pictureUploadServiceAdpater.UploadPicture(pictureType, pictureName);
        }
    }
}

/// <summary>
/// 图片上传适配器,适配视频上传服务
/// </summary>
class PictureUploadServiceAdpater : IPictureUploadService
{
    /// <summary>
    /// 视频上传服务(被适配类)
    /// </summary>
    private VideoUploadService videoUploadServer;

    public PictureUploadServiceAdpater()
    {
        this.videoUploadServer = new VideoUploadService();
    }

    /// <summary>
    /// 目标接口(适配视频上传)
    /// </summary>
    /// <param name="pictureType"></param>
    /// <param name="pictureName"></param>
    public void UploadPicture(string pictureType, string pictureName)
    {
        videoUploadServer.UploadVideo(pictureName);
    }
}
/// <summary>
/// 视频上传服务
/// </summary>
class VideoUploadService
{
    /// <summary>
    /// 上传视频
    /// </summary>
    /// <param name="videoName"></param>
    public void UploadVideo(string videoName)
    {
        Console.WriteLine($"视频名称:{videoName},上传成功");
    }
}

客户端调用

IPictureUploadService pictureUploadService = new PictureUploadService();
pictureUploadService.UploadPicture("jpg","手机");
pictureUploadService.UploadPicture("mp4","手机");

总结

适配器使用前提

  • 系统中功能已经实现时候。
  • 系统中功能不兼容时候。

缺点

  • 导致对象违背单一职责。
  • 导致代码理解难度增大。

建议:尽量保证规范。尽量保证统一。

代码规范不统一,那么就只能只用适配器暂时解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值