适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以无间合作。
这个模式可以创建适配器进行接口转换,让不兼容的接口变成兼容。
这个模式主要有四个部分:
Client:客户
Target:目标接口
Adapter:适配器
Adaptee:被适配者
例子:假设有一个鸭子类,还有一个火鸡类,想让天鹅完成火鸡做的事情,这时候我们就需要一个鸭子适配器.
鸭子类:
public interface Duck { void Quack(); void Fly(); } public class MallardDuck : Duck { public void Quack() { Debug.WriteLine("Quack"); } public void Fly() { Debug.WriteLine("Fly"); } }
火鸡类:
public interface TurKey { void Gobble(); void Fly(); } public class WildTurKey : TurKey { public void Gobble() { Debug.WriteLine("Gobble gobble"); } public void Fly() { Debug.WriteLine("I am Flying Short Distance"); } }
鸭子对象适配器 (采用包含的方式):
public class TurKeyAdapter : Duck { TurKey turKey; public TurKeyAdapter(TurKey turKey) { this.turKey = turKey; } public void Quack() { turKey.Gobble(); } public void Fly() { turKey.Fly(); } }
鸭子的类适配器(类适配器采用多重继承的方式):
public class TurKeyAdapter : WildTurKey, Duck { public void Quack() { this.Gobble(); } public new void Fly() { base.Fly(); } }