六、Adapter模式
6.1 Adapter模式的概念
- 使用场景
- 在不修改现有类的情况下,复用现有类,并使其符合新环境的要求
- 例如,现在需要调用某个方法,该方法满足某个接口规范,现有的一个类并不满足该接口规范
- 遗留代码复用、类库迁移
- 分类
- 对象适配器
- 通过组合的方式,将对象封装成满足条件的新对象
- 合成复用原则:尽量使用合成/聚合的方式,而不是使用继承
- 类适配器
6.2 Adapter模式的实现
public interface IUSB
{
void GetData();
}
public class Computer
{
public void ConnectUSB(IUSB usb)
{
usb.GetData();
}
}
public class SDCard
{
public void ResponseData()
{
Console.WriteLine("SDCard正在返回数据");
}
}
public class SDReader : IUSB
{
private SDCard _sdCard;
public SDReader(SDCard sdCard)
{
this._sdCard = sdCard;
}
public void GetData()
{
this._sdCard.ResponseData();
}
}
public class SDReader : SDCard, IUSB
{
public void GetData()
{
base.ResponseData();
}
}
class Program
{
static void Main(string[] args)
{
SDCard sdCard = new SDCard();
Computer computer = new Computer();
computer.ConnectUSB(new SDReader(sdCard));
Computer computer = new Computer();
computer.ConnectUSB(new SDReader());
Console.ReadLine();
}
}