Этот класс внедряет все зависимости в конструкторе, но одновременно используется только одна зависимость.Считается ли это плохим дизайном?
public class OrderPayment
{
ICreditCardPayment _ccPayment;
ICashPayment _cashPayment;
public OrderPayment(ICreditCardPayment ccPayment, ICashPayment cashPayment)
{
_ccPayment = ccPayment;
_cashPayment = cashPayment;
}
private void PrepareOrder(Order order)
{
// Do stuff with the order
}
public PaymentResult PayByCreditCard(Order order)
{
PrepareOrder(order);
return _ccPayment.Pay(order);
}
public PaymentResult PayByCreditCard(Order order)
{
PrepareOrder(order);
return _cashPayment.Pay(order);
}
}
Альтернатива такова:
public class OrderPayment
{
private void PrepareOrder(Order order)
{
// Do stuff with the order
}
public PaymentResult PayByCreditCard(Order order, ICreditCardPayment ccPayment)
{
PrepareOrder(order);
return ccPayment.Pay(order);
}
public PaymentResult PayByCreditCard(Order order, ICashPayment cashPayment)
{
PrepareOrder(order);
return cashPayment.Pay(order);
}
}
Это несколько усложняет вызов функции.Вы бы использовали первый, более чистый, хотя и не каждый параметр конструктора?Учитывая, что структура DI должна создавать экземпляры потенциально тяжелых классов, даже если они не все используются, я не уверен, насколько это хорошо.
Так, какой из них вы бы использовали?Или, может быть, другая реализация?