Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / March 2007

Tip: Looking for answers? Try searching our database.

Design pattern for customised versions of a Spring app

Thread view: 
WombatDeath@gmail.com - 15 Mar 2007 16:31 GMT
Hi,

I have a Spring/JSP/Hibernate web app which needs to be implemented in
a few different countries, each country having slightly different
requirements.  The language issue is easy to resolve but I'm wondering
how best to implement the different properties, entity relationships
and business rules which are adopted by each country.

As an example, let's say that when a user enters a customer account
into the app, the new account is assigned to an account manager.  In
the UK the assignation is based upon customer type, in the US its
based upon the customer's postcode (zip code) and in Germany the
account is assigned manually by the user.

In addition, in the US we store the customer's email address while in
Germany and the UK we don't.  But in the UK we need to allow the user
to enter as many phone numbers for the customer as they wish, while
the US and Germany allow only one.

It's been suggested to me that we could have one big app with
conditional logic for each country ("if UK do this; if US do that; if
Germany do something else").  A nicer idea, to my mind, is to have a
"core" app from which the customised countries inherit as necessary.
But I'm not really a Java programmer and am likely to be talking
rubbish.

It strikes me that this must be a solved problem, and any advice would
be much appreciated.

Thanks
Wombat
Eric Sosman - 15 Mar 2007 16:41 GMT
WombatDeath@gmail.com wrote On 03/15/07 11:31,:
> Hi,
>
[quoted text clipped - 24 lines]
> It strikes me that this must be a solved problem, and any advice would
> be much appreciated.

   Another approach that might be useful is to have an
abstract DataGatherer class that's extended by USdataGatherer
and UKdataGatherer and DEdataGatherer.  (A similar thing could
be done with interfaces.)  The "one big app" would concern
itself with storing the data, making computations on it, and
so on, but not with the country-specific rules.

   This is a lot like your "one big app with conditional
logic," except that the logic is factored out into separate
pluggable pieces and the conditionalization lies in the
way Java dispatches to methods of polymorphic objects.

Signature

Eric.Sosman@sun.com

Daniel Pitts - 16 Mar 2007 00:32 GMT
On Mar 15, 8:31 am, WombatDe...@gmail.com wrote:
> Hi,
>
[quoted text clipped - 27 lines]
> Thanks
> Wombat

Search for the Strategy pattern.
You could basically have plug-in objects that override certain
behavior depending on the country. It would then be a simple
configuration change (or it could be automated) to look up the proper
Strategy implementation which differs for that country.

It similar to your concept of a "core" app with extended countries,
except that the "core" app calls into the Strategy interface at
specific times.

Hmm, I just read Eric Sosman's reply to you, and he's basically saying
the same thing, but the official name for that concept is the
"Strategy pattern".  Googling for it will give you some good
resources, I'm sure.

Hope this helps,
Daniel.
WombatDeath@gmail.com - 16 Mar 2007 02:14 GMT
Thank you both very much; that's given me lots to think about. I have
some reading to do!

Thanks again,
Wombat


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.