Я поддерживаю проект ASP.NET MVC. В проекте у оригинального разработчика абсолютная масса интерфейсов. Например: IOrderService
, IPaymentService
, IEmailService
, IResourceService
. Меня смущает то, что каждый из них реализуется только одним классом. Другими словами:
OrderService : IOrderService
PaymentService : IPaymentService
Я всегда понимал, что интерфейсы используются для создания архитектуры, в которой компоненты могут быть легко заменены. Что-то вроде:
Square : IShape
Circle : IShape
Более того, я не понимаю, как они создаются и используются.Вот OrderService:
public class OrderService : IOrderService
{
private readonly ICommunicationService _communicationService;
private readonly ILogger _logger;
private readonly IRepository<Product> _productRepository;
public OrderService(ICommunicationService communicationService, ILogger logger,
IRepository<Product> productRepository)
{
_communicationService = communicationService;
_logger = logger;
_productRepository = productRepository;
}
}
Кажется, что эти объекты никогда не создавались напрямую, как в OrderService orderService = new OrderService ()
он всегда использует интерфейс. Я не понимаю, почему интерфейсы используются вместо класса, реализующего интерфейс, или как это вообще работает. Есть ли что-то важное, чего мне не хватает в интерфейсах, чего не раскрывают мои навыки работы с Google?