动机:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
应用:旧代码复用、类库迁移等。
场景:原有一只SP/2接口的鼠标,现想插在ThinkPad T60上使用,由于T60鼠标接口为USB接口,所以需要一个转换器进行转接。
说明:适配器包括两种实现结构:对象适配器和类适配器。类适配器使用多继承,带来不良的高耦合,一般不使用。
结构
代码实现
namespace DesignPattern.Adapter { /** <summary> /// 原有类 /// </summary> public class SP2Mouse { public void MoveSP2() { } public void TuneSP2() { } } /** <summary> /// 客户希望的接口 /// </summary> interface IMouse { void Init(); void Move(); void Tune(); void End(); } /** <summary> /// 对象适配器 /// </summary> public class MouseAdapter : IMouse { SP2Mouse sp2Mouse; // 被适配对象 public MouseAdapter() { sp2Mouse = new SP2Mouse(); } public void Init() { } public void Move() { sp2Mouse.MoveSP2(); // Do something else } public void Tune() { sp2Mouse.TuneSP2(); // Do something else } public void End() { } } }