【发布时间】:2011-03-08 19:46:29
【问题描述】:
为了访问我们的 Accounts 数据库的数据,我们需要通过一个 3rd 方 API,它只是作为对我们解决方案的引用而添加的另一个程序集。
在我们的服务中,有几种类型的 API 调用看起来与此类似:
ICustomers customerCollection =GetCollection(OrgId,OrgUnit,CustomerInfo, "Customers");
{
customerCollection.Filter.Add("MasterCustomerId", QueryOperatorEnum.Equals, masterCustomerID);
customerCollection.Filter.Add("SubCustomerId", QueryOperatorEnum.Equals,subCustomerID);
}
customerCollection.Fill();
在调用customerCollection.Fill() 之后,API 会进入数据库并使用适当的过滤器运行查询。返回的对象属于 API。在此服务中,对 API 的许多调用都具有独特的过滤要求。
我想做的是使用适配器模式将这些调用放在我自己的类后面并返回我拥有的对象。然后我可以从我的服务中对我的适配器进行编码,让他们担心调用第三方 API。
问题是我不知道处理过滤器的所有变体的好方法,所以我不是简单地在我的适配器中重新创建过滤语法。
我可以制作扩展/静态方法,将 API 的过滤系统转换为流畅的语法,所以它看起来像这样:
customerCollection.Filter(“MasterCustomerId).Equals(masterCustomerId).Filter(SubCustomerId).Equals(subCustomerId).Fill();
但这似乎有些不对劲。我觉得我对服务承担了太多责任,无法完成所有这些调用。
我正在努力发展我的面向对象技能,如果有人能在这个问题上帮助我指出正确的方向,我将不胜感激。
【问题讨论】:
标签: c# design-patterns adapter