aspose file tools
The moose likes OO, Patterns, UML and Refactoring and the fly likes Pattern to replace switch case with different funtionality in the case block Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


Win a copy of The Mikado Method this week in the Agile and other Processes forum!
JavaRanch » Java Forums » Engineering » OO, Patterns, UML and Refactoring
Reply Bookmark "Pattern to replace switch case with different funtionality in the case block" Watch "Pattern to replace switch case with different funtionality in the case block" New topic
Author

Pattern to replace switch case with different funtionality in the case block

Joshua Antony
Ranch Hand

Joined: Jun 05, 2006
Posts: 254
I have a situation here, below is the extract


I want to get rid of the switch statement, reading through one of Martin Fowler's book found that this can be replaced by adding appropriate subclass (for each case condition) and using the same polymorphically in this method.

However, as can be seen by the method getting invoked, they dont seem to be doing similar work, so subclassing them with a common parent would not yeild a common behavior(method) to be abstracted out in the parent class.

Is there any way to get around this situation, or am I better off creating different methods for each case statement?

Cheers-
Joshua


SCJP,SCWCD, Into ATG now!
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

Command pattern.
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 14480
    
    7

Subclassing using overloaded ("virtual") functions is an effective, efficient and powerful technique, but your sample code doesn't look like a good fit, since it looks more like you're interested in extracting different selections of data from a SINGLE object than in getting different data from different instances of an object. The fact that the destination data is always of the same type is immaterial.

In practical terms, I would probably keep the switch statement. It's simple, easy to read and unambiguous. And as a plus, most compilers contain extensive functions to optimize switch statements to a bare minimum of overhead.

I might change my mind if things got more complicated, but for the example given, I'd probably not lose sleep over it.


Customer surveys are for companies who didn't pay proper attention to begin with.
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
I would move the conditional logic into the storeManager class and have a common fetch method. For example,



In my opinion, it would best to keep this type of logic outside of a Servlet class, and would be more appropriate inside the storeManager.
 
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to run our stuff on 16 servers instead of 3.
 
subject: Pattern to replace switch case with different funtionality in the case block
 
Similar Threads
NX: Connection problems
Patterns for replacing Switching statements
switch case
switch statement
Mastermind Game - comparing two arrays