Я видел следующий код, читающий форумы и другие сообщения в блогах, и адаптированный для того, чтобы задать несколько вопросов.
public interface IService<T>
{
int Add(T entity);
void Update(T entity);
}
public abstract class ServiceBase<T> : IService<T>
{
public int Add(T entity) { ... }
public void Update(T entity) { ... }
}
public interface ICarService : IService<Car>
{
}
public class SomeBaseClass : ServiceBase<Car>, ICarService
{
public int Add(Car entity);
public void Update(Car entity);
}
То, что я не понимаю, - это преимущество того, что абстрактный класс привносит интерфейс. Для меня это просто немного повторяется, и я не могу понять, что имеет абстрактный класс, реализующий интерфейс.
- Почему абстрактный класс
ServiceBase<T>
просто не определяется, так как нет необходимости наследовать интерфейс IService? Это удвоение кода? - Зачем нужно
SomeBaseClass
внедрятьICarService
? Должна ли ServiceBase быть достаточной?