У меня есть 2 проекта: A и B, которые должны взаимодействовать друг с другом.
Проект A вводит имена интерфейсов ISpecialTask и Project B должны его реализовывать.
В Projet B есть объект с именем TaskWithListOfProperties, который не может реализовать ISpecialTask, поскольку он имеет различную структуру свойств (кроме того, вся система знает, как работать с TaskWithListOfProperties, и я не хочу изменять ее структуру).
Поэтому я решил создать класс с именем SpecialTaskFromListOfProperties, который реализует ISpecialTask и использует экземпляр TaskWithListOfProperties, чтобы использовать его для взаимодействия между проектами.
interface ISpecialTask {
long Id{get;}
long WorkerId{get;}
long VehicleId{get;}
long CustomerId{get;}
}
class TaskWithListOfProperties {
IDictionary<string, long> Properties {get;
}
class SpecialTaskFromListOfProperties : ISpecialTask {
public SpecialTaskFromListOfProperties(TaskWithListOfProperties ins) {
...
...
}
public long Id { get{ ... } }
public long WorkerId { get{ ... } }
public long VehicleId { get{ ... } }
public long CustomerId { get{ ... } }
}
Является ли SpecialTaskFromListOfProperties шаблоном адаптера?
В чем разница между шаблоном адаптера и шаблоном декоратора?