using System; namespace Test
{
/// <summary>
/// 适配器模式主要解决的问题就是我们要调用的接口类型,无法满足我们新系统的使用需求,
/// 这时候,我们需要将旧系统的接口,通过适配器进行转配,达到支持新接口调用的目的。
/// 对于这样的要求,我们通过适配器就可以完成,当然如果有多个接口需要转配,
/// 那么我们就需要为每一个接口提供一个适配器去完成转换的工作。
/// </summary>
class Program
{
static void Main(string[] args)
{
ISelect adapter = new QueryAdapter();
object o = adapter.GetList();
ISelect adapterEx = new QueryAdapterEx();
object oEx = adapter.GetList();
}
} /// <summary>
/// 旧系统查询接口
/// </summary>
public interface IQuery
{
object QueryList();
} /// <summary>
/// 旧系统的查询服务
/// </summary>
public class Query : IQuery
{
public object QueryList()
{
return new object();
}
} /// <summary>
/// 新系统查询接口
/// </summary>
public interface ISelect
{
object GetList();
} /// <summary>
/// 通过类适配器完成转配操作
/// 类适配器:通过继承的方式来实现,将旧系统的方法进行封装。
/// 对象适配器在进行适配器之间的转换过程中,无疑类适配器也能完成,
/// 但是依赖性会加大,并且随着适配要求的灵活性,可能通过继承膨胀的难以控制。
/// </summary>
public class QueryAdapter : Query, ISelect
{
public object GetList()
{
return base.QueryList();
}
} /// <summary>
/// 通过类适配器完成转配操作
/// 对象适配器:不是通过继承的方式,
/// 而是通过对象组合的方式来进行处理的,
/// 我们只要学过OO的设计原则的都知道,组合相比继承是推荐的方式。
/// </summary>
public class QueryAdapterEx : ISelect
{
private Query query = new Query(); public object GetList()
{
return query.QueryList();
}
} }