While Singletons are used in multiple places to good effect, there can be a few gotchas with this pattern. As Singletons have a global point of access, the following issues can occur:
Global variables can be changed by mistake at one place and, as the developer may think that they have remained unchanged, the variables get used elsewhere in the application.
Multiple references may get created to the same object. As Singleton creates only one object, multiple references can get created at this point to the same object.
All classes that are dependent on global variables get tightly coupled as a change to the global data by one class can inadvertently impact the other class.