Summary
We have learned a few important points about the best practices and patterns for managing dependencies in this chapter. Though it is proven that DI brings greater flexibility and modularity in the code by decoupling the client code from its dependencies, there are a few things that we should follow to get the best out of it.
In the beginning, we learned about patterns other than DI that help us to implement IoC. You can definitely use them in your code to decouple modules where the use of IoC containers is not possible. For example, in a legacy code where managing dependencies is not possible through an IoC container, these patterns are useful to achieve IoC.
We became familiar with various configuration options and learned how to choose the right one. We also saw the injection styles used in wiring the dependencies. When working with dependency management, one very obvious problem that occurs is circular reference, which causes circular dependency. We have observed what problems...