设计模式之“适配器模式”
共有两类适配器模式:
对象适配器模式
-- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。
类适配器模式
-- 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four
客户:需要调用我们的代码的对象。
Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。
(1)类适配器:
当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。
下面是类适配器的UML图:
(2)对象适配器:
对象适配器”通过组合除了满足“用户期待接口”还降低了代码间的不良耦合。在工作中推荐使用“对象适配”。下面是对象适配器的UML图:
实例:
public interface IUserInfo { string getUserName { get; } } public class Adapter : IUserInfo { Adaptee adt = new Adaptee(); public string getUserName { get { return adt.getName(); } } } public class Adaptee { public string getName() { return "new name"; } }