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