Я поддерживаю проект 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?