现在我已经使用适配器模式从调用代码中抽象我的WCF服务客户端,这样我就可以有效地单元测试业务对象而不依赖于服务客户端。例如:适配器模式与封装冲突吗?
public class MyBusinessObject
{
private ITheService _service;
public MyBusinessObject(ITheService service) { _service = service; }
public void DoSomethingOnTheServer() { _service.DoSomething(); }
}
现在适配器的接口和具体实现公开了与服务代理本身相同的合同。因此,继续例如:
public interface ITheService
{
void DoSomething();
ServerObject GetData();
}
public class DefaultService : ITheService
{
public void DoSomething() { ... }
public ServerObject GetData()
{
using (var proxy = new ActualServiceClient())
{
return proxy.GetData();
}
}
}
这工作得很好,很好,我能够有效地测试我的业务对象等
我的问题的事实,我从第二返回类型茎方法与服务强烈耦合。如果适配器返回了我要使用的类型的实例而不是来自服务的DTO /代理,那么它是否更有意义并且与Adapter模式更一致?
如果是这样,那么我很担心封装。在典型的用例中,调用服务来检索数据,然后将其填充到我的业务对象中。如果我想让只读属性暴露给我的UI,那么我不能将这些属性的赋值委托给另一个对象,比如适配器。
想法?