我正在维护一个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()
,它总是使用接口。我不明白为什么要使用接口而不是实现接口的类,或者这是如何工作的。我是否遗漏了一些关于接口的重要信息?