C# 设计模式(六)适配器模式

1.为什么要用适配器模式

在引入不可修改的第三方类库,并且需要适配原有的接口时,就需要使用适配配器模式。

2.适配器模式的实现

实现要素:

  • 目标接口
  • 适配者
  • 适配器

现有接口 IHelper

/// <summary>
    /// 需要适配的接口,不可修改
    /// </summary>
    public interface IHelper
    {
        void Add();
        void Update();
        void Delete();
        void Query();
    }

 

接口实现

/// <summary>
    /// mysql 
    /// </summary>
    public class MysqlHelper : IHelper
    {
        public void Add()
        {
            Console.WriteLine("Mysql 新增");
        }

        public void Delete()
        {
            Console.WriteLine("Mysql 删除");

        }

        public void Query()
        {
            Console.WriteLine("Mysql 查询");

        }

        public void Update()
        {
            Console.WriteLine("Mysql 修改");

        }
    }

需要适配的类

/// <summary>
    /// 适配者,不可修改
    /// </summary>
    public class RedisHelper
    {
        public void AddRedis()
        {
            Console.WriteLine("Redis 新增");
        }

        public void UpdateRedis()
        {
            Console.WriteLine("Redis 修改");
        }

        public void DeleteRedis()
        {
            Console.WriteLine("Redis 删除");
        }

        public void QueryRedis()
        {
            Console.WriteLine("Redis 查询");
        }
    }

适配器:

  • 类适配器
/// <summary>
    /// 类适配器
    /// </summary>
    public class RedisClassAdapter : RedisHelper,IHelper
    {
        public void Add()
        {
            base.AddRedis();
        }

        public void Delete()
        {
            base.DeleteRedis();
        }

        public void Query()
        {
            base.QueryRedis();
        }

        public void Update()
        {
            base.UpdateRedis();
        }
    }

  • 对象适配器
/// <summary>
    /// 对象适配器
    /// </summary>
    public class RedisAdapterObject : IHelper
    {
        private RedisHelper _RedisHelper = null;

        public RedisAdapterObject(RedisHelper redisHelper)
        {
            this._RedisHelper = redisHelper;
        }

        public RedisAdapterObject()
        {
            this._RedisHelper = new RedisHelper();
        }

        public void Add()
        {
            this._RedisHelper.AddRedis();
        }

        public void Delete()
        {
            this._RedisHelper.DeleteRedis();
            
        }

        public void Query()
        {
            this._RedisHelper.QueryRedis();
        }

        public void Update()
        {
            this._RedisHelper.UpdateRedis();
        }
    }

以上便是适配器模式的实现

3.总结一下

类适配器:采用继承的方式,继承有很强的侵入性。

对象适配器:采用组合方式,更加灵活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值