设计模式实践-适配器
场景
公司实现标准读卡器接口读卡,第三方读卡器实现其他接口,使用适配器适配第三方读卡器。
实现代码
标准读卡器接口:
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
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号