I don't see any standard class called Enmerator
(there is Enumeration, enum type, but I could not locate Enumerator)
And what is it that you want to accomplish?
Yes, you can use your interface name to specify type of your objects
If, say, you have ArrayList of objects which contains instances
of both HTMLWriter and XMLWriter, then
in ReportImpl
and in this way have printout in different formats.
Is there some other way how you want to use this interface?
0
pkrish80Author Commented:
Hi for_yan,
Yes, In ReportImpl, I want to create an Instance of one of the different type of report writer. I want to know of other ways to get an instance with the Interface other than a arraylist. I wanted ideas around Using Enum type and Enumeration.
Can I get a specific type of writer with code such as
(ReportWriter) writer = ReportWriter.getWriter(); and it returns a html or csv writer automatically? I know this might be a bit vague. Please do let me know if you have any other ideas?
This is where the FactoryPattern comes in. There are different ways of doing this, but in essence you create a new class ReportWriterFactory. This will have the static ReportWriter getWriter(type) method.
From your ReportImpl class you will then invoke either ReportWriter.getWriter("csv") or ReportWriter.getWriter("xml"); This will then give the correct instance back. Internally the Factory class can be implemented in n number of ways - again all it does is check the type of instance needed and return either new XmlReportWriter() or new CSVReportWriter().
When I said "n" number of ways, one way would be to use an xml file to map the type to instance, you could use singleton writer instances and pre-cache them, instead of type string you can pass type enum ... so many ways.
Please let me know if you need more help.
0
pkrish80Author Commented:
How do I use type enum with in my ReportWriterFactory class? Can you throw more light on it?
0
pkrish80Author Commented:
The ReportWriterFactory class, would that be an abstract class which the csv and xml report writers would sublass?
I am attaching a very simple example of how factory pattern can be used in your case. You can do fancy stuff like singletons and Hashmap based caches. If you go for caching please make sure your Writer instances are thread-safe.
I am sorry can you elaborate a little bit.
I don't see any standard class called Enmerator
(there is Enumeration, enum type, but I could not locate Enumerator)
And what is it that you want to accomplish?
Yes, you can use your interface name to specify type of your objects
If, say, you have ArrayList of objects which contains instances
of both HTMLWriter and XMLWriter, then
in ReportImpl
you can get elemenst of this ArrayList like that:
ArrayList<ReportWriter> arrayList;
ReportWriter rw = arrayList.get(0);
rw.createSuccesFullRow(mes
rw = arrayList.get(1);
rw.createSuccessfulRow(mes
and in this way have printout in different formats.
Is there some other way how you want to use this interface?