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(); } } }