Use Modular Architecture
Have You Ever Wondered...?
OK, so you want to prevent object-oriented spaghetti mess by splitting our systems into into independent modular pieces, however I wonder how to glue them together? Are there some good practices for doing so? Yes, there are and the Chapter 7 gives some. For example to glue pieces together you need some injection to configure all individual components to work together. The Chapter 7 builds the understanding for this by starting with the most straightforward and hand-coded solutions and then enhances them to cover injection as provided by Spring Framework as well as latest releases of JDK.
Manifesto of Modular Programming
The Chapter 7 also mentions that it might be beneficial to join the strength of Spring (or other Dependency Injection technology) and Lookup. The time has passed since then, and the bridge between these two is available. See LookupAndSpring for more details. We even have a more theoretical explanation why singletons need not be evil.