适配器模式定义:将一个类的接口,转换成客户希望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
场景:妈妈想要吃皇上皇的烤鸭(烤鸭呱呱的叫,能飞很远;火鸡姑姑的叫,只能飞一段距离)
1.妈妈专门提供给的烤鸭接口:
public interface IDuck { void Quack(); void Fly(); }
2.但是到了皇上皇,店员说:“我们只有火鸡了,没有烤鸭了,但是我可以帮你用火鸡来冒充一下烤鸭”,我说:“如何冒充?”,“我用这个蓝头的火鸡来冒充下烤鸭把”
以下是火鸡的接口及实现,很明显火鸡的叫法和飞行和烤鸭的不适合;
//火鸡接口 public interface ITurkey { void Gobble(); void Fly(); } //蓝头火鸡 public class WildTurkey : ITurkey { public void Gobble() { Console.Write("I Can Gobble.."); } public void Fly() { Console.Write("I Can Fly a Short.."); } }
3.那我们来构造一个烤鸭适配器把,代码如下:
public class DuckAdaper : IDuck { ITurkey Turkey; public DuckAdaper(ITurkey turkey) { Turkey = turkey; } public void Quack() { Turkey.Gobble(); } public void Fly() { for (int i = 0; i < 5; i++) { Turkey.Fly(); } } }
4.现在拿好你的“烤鸭”
WildTurkey turkey = new WildTurkey(); IDuck duck = new DuckAdaper(turkey); duck.Quack(); duck.Fly();