Consider a web application with business layer and data access layer. So, every request has to be passed through these two layers in order to get processed.
Since there would be frequent requests coming in, it is not wise to create a new business and data access objects to process each and every request. In this case, usually I tend to go for Singletons of business and DAO.
But I hear lot of problems in using Singleton pattern, as many suggest against the pattern (mainly because its global). In that case, what would be the correct design strategy for the scenario I described above?
Service Objects should be Singleton.
You can use Spring to maintain singleton service objects for you.