Posted by: joachimvandenbogaert | September 27, 2007

A distributed database application using web services: the DAO and the Abstract Factory pattern

This is an entry in Dutch, it only serves to remind me what the two patterns are for.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

De bovenstaande link naar het DAO design pattern geeft een excellente uitleg over hoe toegang te organiseren tot persistent data. Een DAO dient als scheidingslaag tussen data en business logic.

De Abstract Factory creëert een implementatiespecifieke Factory, naargelang het type dat gevraagd wordt (bijvoorbeeld een Factory voor SQL2005, één voor PostgreSQL, …). Deze Abstract Factory bevat abstracte methodes (bv. GetUserDao()) die als type een interface (bv interface UserDao) returnen.

De implementatiespecifieke Factories genereren implementatiespecifieke DAO’s die voldoen aan het interface contract van een DAO interface terwijl ze het contract van de Abstract Factory nakomen.

Op deze manier wordt ervoor gezorgd dat de client code via een interface eigenlijk een expliciete implementatie aanspreekt, zonder daarvoor te moeten weten hoe die expliciete implementatie in elkaar zit. Op deze manier kan gemakkelijk ook naar een andere DBMS implementatie overgeschakeld worden. Enkel de implementatiespecifieke code moet gewijzigd worden, bv

DaoFactory daoPostgreSql = DAOFactory.getDaoFactory(DaoFactory.DbmsType.PostgreSql);
DaoUser = daoPostgreSql.GetDaoUser();

Uiteraard moet PostgreSqlDaoFactory : DaoFactory geschreven worden alsook
PostgreSqlDaoUser : DaoUser

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: