转自http://blog.csdn.net/cyai/article/details/1826440
适配器的目的是将已有类的功能提供给客户类,是一个中间者的角色。类适配器是客户类有一个接口规范的情况下可用,此时适配类只需作为功能类的子类,并实现接口并可,直接用功能类实现了客户类的要求。而对象适配类是在客户类没有提供接口的情况下用的,适配类作为客户类的子类,并在其中实例化一个功能类的对象,并调用此对象的方法实现适配,故称对象适配。
类适配器例子:
//
客户接口
public Interface ICustomer
{
public int CustomMethod();
}
// 已有功能类
public class Action
{
public Action(){};
public int ActionMethod()
{
//do something here
}
}
// 类适配器
public class AdapterClass:Action,ICutomer
{
public AdapterClass(){};
public void CustumMethod()
{
retun ActionMethod();
}
}
public Interface ICustomer
{
public int CustomMethod();
}
// 已有功能类
public class Action
{
public Action(){};
public int ActionMethod()
{
//do something here
}
}
// 类适配器
public class AdapterClass:Action,ICutomer
{
public AdapterClass(){};
public void CustumMethod()
{
retun ActionMethod();
}
}
对象适配器例子:
//
客户类
public class Customer
{
public virtual int CustomMethod();
}
// 已有功能类
public class Action
{
public Action()...{};
public int ActionMethod()
{
//do something here
}
}
// 对象适配器
public class AdapterClass:Customer
{
private Action ac;
public AdapterClass()...{};
public override void CustumMethod()
{
retun ac.ActionMethod();
}
}
public class Customer
{
public virtual int CustomMethod();
}
// 已有功能类
public class Action
{
public Action()...{};
public int ActionMethod()
{
//do something here
}
}
// 对象适配器
public class AdapterClass:Customer
{
private Action ac;
public AdapterClass()...{};
public override void CustumMethod()
{
retun ac.ActionMethod();
}
}