看起來會比 Spring framework 輕量化。
https://code.google.com/p/google-guice/wiki/Motivation?tm=6
Direct constructor calls 第一個解法就是使用 factory pattern,但違反了 Dependency Injection 原則,這個也與 single responsibility 有關,以上面連結為例,BillingService 究竟不該負責產生CreditCardProcessor 以及 TransactionLog。
bind(TransactionLog.class).to(DatabaseTransactionLog.class); bind(CreditCardProcessor.class).to(PaypalCreditCardProcessor.class); bind(BillingService.class).to(RealBillingService.class);
所以自然而然就會有這樣子的設計: binding,頗舒服的設計。