Явная зависимость — это ситуация, когда один компонент или модуль программы явно зависит от другого компонента или модуля для выполнения определенной задачи. Другими словами, это происходит, когда связь между двумя компонентами четко определена и указана в коде.
Вот несколько примеров явных зависимостей в разных языках программирования:
-
Java:
public class OrderService { private PaymentService paymentService; public OrderService(PaymentService paymentService) { this.paymentService = paymentService; } public void processOrder(Order order) { // Process the order paymentService.chargePayment(order); } } public class PaymentService { public void chargePayment(Order order) { // Charge the payment } }В этом примере класс
OrderServiceявно зависит от классаPaymentServiceдля взимания оплаты за заказ. ЭкземплярPaymentServiceпередается конструкторуOrderService, устанавливая четкую зависимость между двумя классами. -
Python:
class EmailService: def __init__(self, smtp_client): self.smtp_client = smtp_client def send_email(self, recipient, message): # Send email using the SMTP client self.smtp_client.send_message(recipient, message) class SMTPClient: def send_message(self, recipient, message): # Send the message using SMTP passВ этом примере Python класс
EmailServiceявно зависит от классаSMTPClientдля отправки электронных писем. ЭкземплярSMTPClientвнедряется в конструкторEmailService, создавая четкую зависимость между двумя классами. -
JavaScript:
class DataService { constructor(apiClient) { this.apiClient = apiClient; } fetchData(url) { // Fetch data from the API using the API client this.apiClient.get(url); } } class APIClient { get(url) { // Make an HTTP GET request to the specified URL } }В этом примере JavaScript класс
DataServiceявно зависит от классаAPIClientдля получения данных из API. ЭкземплярAPIClientпередается конструкторуDataService, устанавливая четкую зависимость между двумя классами.
Эти примеры демонстрируют явные зависимости, когда один компонент напрямую зависит от другого компонента посредством внедрения конструктора или вызовов методов.