Há uma parte da nossa base de código escrita no seguinte estilo:
// IScheduledTask.cs
public interface IScheduledTask
{
string TaskName { get; set; }
int TaskPriority { get; set; }
List<IScheduledTask> Subtasks { get; set; }
// ... several more properties in this vein
}
// ScheduledTaskImpl.cs
public class ScheduledTaskImpl : IScheduledTask
{
public string TaskName { get; set; }
public int TaskPriority { get; set; }
public List<IScheduledTask> Subtasks { get; set; }
// ... several more properties in this vein,
// perhaps a constructor or two for convenience.
}
Ou seja, há um grande número de interfaces especificando apenas um conjunto de propriedades sem comportamento, cada uma com uma única implementação correspondente que as implementa com propriedades automáticas. O código é escrito por alguém razoavelmente sênior (muito mais do que eu) e além desse uso de código processual razoável de interfaces. Fiquei me perguntando se alguém havia encontrado / usado esse estilo e se ele tem alguma vantagem sobre o uso de DTOs concretos em todos os lugares, sem as interfaces.