Enough is sayed here at Pure Danger Tech. Please let those singletons die, however there is no real singleton with java anyway.
JSR-296 will provide us with nice ressource management. You can get property settings like label texts, colors and other properties from ressource files easily:
ApplicationContext ctxt = ApplicationContext.getInstance(); ResourceManager mgr = ctxt.getResourceManager(); resource = mgr.getResourceMap(HelloWorld.class); String helloText = (String) resource.getObject("helloLabel", String.class);
But… what is this ApplicationContext.getInstance() static method call? Where is dependency injection? Look into the API documentation of ApplicationContext: it’s a global service locator. That means it provides a fixed bunch of services which are accessible by a singleton instance. You can of course use aggregation, sub-classing and delegation to extend it’s abilities but dependency injection is the train everyone jumps onto, ain’t it?
There is another issue that puzzles me: where are the interfaces? A framework whithout any interface? It’s even worse, ApplicationContext returns instances of concrete classes, not even abstract classes. So you’ll always get an instance of class
RessourceManager. I you like to provide your own, you can only sub-class it, at least,
RessourceManager is not final.
Can I have some dependeny injection, please? Picocontainer, Guice or Spring, perhaps? Yes, I can but it would be more nice, if RessourceManager, ActionManager and all other services provided by the framework would be interfaces and I could use any implemention I wish.
By the way, there is some dependency injection in the framework: you can inject property values into any awt component with RessourceManager.injectComponent. I hope the method name is not final yet, because I expected an component to be injected into some other instance, not something to be injected into a component.copyright