該類在構造函數中注入所有依賴項,但一次只使用其中一個依賴項。這被認爲是不好的設計?確定不要在構造函數中使用所有參數? - 重新訪問
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框架必須實例化可能很重要的類,儘管它們可能並不全部使用,但我不確定它有多好。
那麼你會使用哪一個?或者也許是不同的實現?
我問了一個非常類似的問題在這裏:http://stackoverflow.com/questions/6960686/is-the-di-pattern-limiting-wrt-昂貴-對象創建耦合與 - 不頻繁 – ckittel