<适配器模式>
Target <接口>
^ |
| |
| Adaptee <被适配类>
|
|_____Adapter <适配器类>
1. 定义
适配器模式是一种结构型设计模式,它能使接口不兼容的类可以一起工作。它通过提供一个包装类(适配器Adapter)来避免出现不兼容接口的问题。
2. 优点
- 解决接口不兼容问题。使用适配器可以让原本不能一起工作的类可以一起工作。
- 提高类的复用率。通过适配器可以访问不兼容接口的功能,提高复用性。
3.缺点
- 过多使用适配器会使系统结构变得复杂。
- 适配过程可能影响性能。
4.拟人化
适配器模式是一个外交官式的性格。它擅长处理不同团体间的关系问题,通过沟通协商来解决双方的争端与分歧,使其可以顺利合作。
这类性格在处理人际关系或团队合作方面有着天然的优势。他们乐于沟通,善于整合不同的观点与利益,同时也具备一定的包容心与调解能力。但是,过度依赖这种外交手段也可能导致问题真正的根源难以被解决。这需要更为果断和直接的性格来指出问题的症结所在。
如果用动物来比喻,适配器模式像一只机灵的猴子。不同的物种难以直接沟通,猴子可以通过自己丰富的社交技巧来打通关节,让它们达成一定的合作。但是,这种方式无法真正消除双方的差异与隔阂,它只是临时性地 “paper over” 了矛盾,这需要猎豹或老鹰这类更为果决的性格来真正化解问题。
<适配器模式>
// 目标接口
public interface ITarget
{
void Request();
}
// 适配者类
public class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("Called SpecificRequest()");
}
}
// 适配器类
public class Adapter : ITarget
{
private Adaptee adaptee;
public Adapter(Adaptee adaptee)
{
this.adaptee = adaptee;
}
public void Request()
{
adaptee.SpecificRequest();
}
}
从上述代码可以看出,Adapter类通过针对ITarget接口的Request()方法调用Adaptee类的SpecificRequest()方法,实现了两者的适配。 Adapter类充当了中间介质的角色,解决了接口不兼容的问题,达到了复用Adaptee类的功能。
应用场景
- 系统的数据和行为都正确,但接口不符的情况。
- 想创建新的类,但需要一致的接口。而不想改变原有接口的情况。
- 使用现有的类,但其接口不符合系统的需要。