Ми маємо залежність від стороннього сервісу, який виявляє гігантський інтерфейс, нам потрібні лише три методи. Крім того, інтерфейс часто змінюється ...
Я вирішив зафіксувати інтерфейс у класі в нашому проекті і лише розкрити потрібні нам методи.
Але я не впевнений, як мені обробляти повернені значення ... Інтерфейс повертає об'єкт типу Storage
. У нас є внутрішній тип, StorageModel
який є нашим внутрішнім представленням а Storage
.
Що б ти повернув у картографі: Storage
чи StorageModel
? У нас є DataService, StorageService
який отримує залежність від введеної обгортки.
В даний час я роблю це в основному так:
public class StorageService
{
private readonly IExternalStorageWrapper externalStorageWrapper;
public StorageService(IExternalStorageWrapper externalStorageWrapper)
{
this.externalStorageWrapper = externalStorageWrapper;
}
public StorageModel GetStorage(int storageId)
{
return this.externalStorageWrapper.GetStorage(storageId).ConvertToStorageModel();
}
}
public class ExternalStorageWrapper : IExternalStorageWrapper
{
public Storage GetStorage(int storageId)
{
using(var ext = new ExternalStorage())
{
return ext.GetStorage(storageId);
}
}
}
Що б ти сказав:
- Чи добре, як вище, що обгортка повертає зовнішній
Storage
об'єкт, а внутрішнійStorageService
повертає внутрішнійStorageModel
? - Або ви вже повернете
StorageModel
коробку в обгортці?