現在我已經使用適配器模式從調用代碼中抽象我的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,那麼我不能將這些屬性的賦值委託給另一個對象,比如適配器。
想法?