设计模式实践-适配器

场景

公司实现标准读卡器接口读卡,第三方读卡器实现其他接口,使用适配器适配第三方读卡器。

实现代码

标准读卡器接口:

namespace DesignPatterns.Adpater
{
    /// <summary>
    /// 读卡器接口
    /// </summary>
    public interface ICardReader
    {
        /// <summary>
        /// 读取数据
        /// </summary>
        void Read();
    }
}

其他读卡器接口:

namespace DesignPatterns.Adpater
{
    /// <summary>
    /// 其他读卡器接口
    /// </summary>
    internal interface IOtherCardReader
    {
        /// <summary>
        /// 从USB读取
        /// </summary>
        void ReadFromUsb();
    }
}

其他读卡器实现:

namespace DesignPatterns.Adpater
{
    /// <summary>
    /// 其他读卡器的实现
    /// </summary>
    internal class OtherCardReader : IOtherCardReader
    {
        /// <summary>
        /// 从USB读取
        /// </summary>
        public void ReadFromUsb()
        {
            Console.WriteLine("read from Other");
        }
    }
}

其他读卡器适配器:

namespace DesignPatterns.Adpater
{
    /// <summary>
    ///     其他读卡器适配器
    /// </summary>
    internal class OtherCardReaderAdpater : ICardReader
    {
        /// <summary>
        ///     其他读卡器对象
        /// </summary>
        private readonly OtherCardReader _cardReader;

        /// <summary>
        ///     Initializes a new instance of the <see cref="OtherCardReaderAdpater" /> class.
        /// </summary>
        /// <param name="cardReader">其他读卡器</param>
        public OtherCardReaderAdpater(OtherCardReader cardReader)
        {
            this._cardReader = cardReader;
        }

        /// <summary>
        ///     从读卡器读取
        /// </summary>
        public void Read()
        {
            this._cardReader.ReadFromUsb();
        }
    }
}

相关调用

        Adpater.ICardReader cardReader = new OtherCardReaderAdpater(new OtherCardReader());
        cardReader.Read();

Out:

read from Other

转载于:https://www.cnblogs.com/4thing/p/5668267.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值