How to realize extendable data objects? 2003-09-23 - By tetsuo
Back PavanKumar Keely wrote:
> Many modules in the application will use this Material > object. Making this Material Object an instance of > Hashtable/HashMap can solve your problem. Because you > can just add one more attribute to this as simple as > that and use that attribute in the new module. But one > problem with this approach is we need to stick to the > standard key names throughout the application. But > avoid hardcoding the key name and use some > initialization file, which will be initiated at the > start of the server. This solution is on the lines of > EJB Design pattern "DTO using HashMap". > > One more way of achieving extendibility is using XML > data object. Whenever you create Material object that > should form the data in the XML. But one problem with > this approach is building XML and parsing the XML.
It's a good solution, but you lose compile-time checking, since the class' interface has to use generic types. In some cases it isn't a big deal, and this solution is simple. You could also use interfaces or static imports (JDK1.5 feature) to keep attribute names. At least, it would avoid misspelling errors be ignored by the compiler.
But some times you want to keep type-safe references. If each module uses only a specific set of methods/attributes/whatever, you can specify an interface for each module, develop the concrete class implementing those interfaces and instantiate it with an Abstract Factory. The factory would look for the name of the concrete class in a config file, and the .class file would be separated (but visible) from the modules' .jar files.
Thus, you can update the implementation of the concrete class without changing the existing modules. However, you have to keep the Material class implementation updated, with support for all modules you install.
If what you wanted was not to change the class, it may not satisfy your requirements, anyway. Well, it was just an suggestion.
Tetsuo
==================================================================== Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
|
|