Portals eNewsletters Web Seminars dataWarehouse.com DM Review Magazine
DM Review | Covering Business Intelligence, Integration & Analytics
   Covering Business Intelligence, Integration & Analytics Advanced Search
advertisement

RESOURCE PORTALS
View all Portals

WEB SEMINARS
Scheduled Events
Archived Events

RESEARCH VAULT
White Paper Library

CAREERZONE
View Job Listings
Post a job

Advertisement

INFORMATION CENTER
DM Review Home
Newsletters
Current Magazine Issue
Magazine Archives
Online Columnists
Ask the Experts
Industry News
Search DM Review

GENERAL RESOURCES
Bookstore
Buyer's Guide
Glossary
Industry Events Calendar
Monthly Product Guides
Software Demo Lab
Vendor Listings

DM REVIEW
About Us
Press Releases
Awards
Advertising/Media Kit
Reprints
Magazine Subscriptions
Editorial Calendar
Contact Us
Customer Service

Architecture Design:
Design Patterns

online columnist  Robert  Wegener     Column published in DMReview.com
April 15, 2004
 
  By Robert Wegener

Ever since the first program was written, designers and developers have tried to leverage existing designs and reuse code whenever possible. With the advent of n-tier architectures and object-oriented languages the need to create baseline patterns from proven designs has become tantamount to the creation of systems that are flexible, maintainable and extendable. This article will provide insight into the use of design patterns to capture knowledge and expertise and apply them to recurring problems.

For the purpose of this article, design patterns will be used generically as a label for patterns in general. A design pattern provides a description of a solution to a recurring design problem. The description defines the key aspects of a common structure through a schema of collaborative components. The components and their relationships are explained through class diagrams, sample code and narrative. Each pattern details when it applies, its constraints and tradeoffs.

Patterns in general should be viewed as a repository of knowledge to capture experience which when combined form a language to resolve common software development problems. The two most prominent repositories of patterns to date are Design Patterns - Elements of Reusable Object Oriented Software by Gamma, Helm, Johnson and Vlissides - also know as the gang of four, and Patterns of Enterprise Application Architecture by Martin Fowler. Both provide detailed patterns that should form the basic structure to any organization's design repository. The patterns are based on OO concepts and can be implemented in any OO language, JAVA, C#, C++, etc.

Aside from the books just mentioned, other catalogs of patterns are available from Sun Microsystems, IBM, Oracle and Microsoft. These catalogs focus on two main frameworks, J2EE and .NET. Both frameworks can be greatly enhanced through the use of patterns. The vendor-specific patterns are well documented and proven over many projects. The core J2EE design patterns provided by Sun Microsystems form the foundation for all other J2EE patterns. The Struts framework produced by the Apache Jakarta Project is a fantastic repository of best practices presented using design patterns which build on J2EE technologies but are not a part of the J2EE standard.

The following patterns overview is based on the Design Patterns by Gama et al. The base 23 patterns are segregated into three areas by purpose: creational patterns, structural patterns and behavioral patterns. Creational patterns deal with object creation. Structural patterns relate to object composition and behavioral patterns deal with the interaction between objects.

The patterns are further classified by scope between objects and classes. Class patterns focus on their static relationship between classes at compile time, while object patterns address the relationship with objects at runtime.

  Purpose
Scope

Creational

Structural

Behavioral

Class

Factory Method

Adapter

Interpreter
Template Method

Object

Abstract Factory
Builder
Prototype
Singleton

Adapter
Bridge
Composite
Facade
Flyweight
Proxy

Chain of Responsibility
Command
Iterator
Mediator
Memento
State
Strategy
Visitor

Figure 1: Design Pattern Space
  1. The creational patterns produce concrete classes by separating the construction of complex objects from their representations. The abstract factory pattern produces an interface without specifying any concrete classes.
  2. The structural patterns work on the interfaces between objects to help decouple an abstraction from its implementation which can be used to let classes with incompatible interfaces work together.
  3. The behavioral patterns control the behavior of how objects relate to themselves and other objects. Object behavior can be based on state, request handling and object interaction.

The best way to get started using design patterns is to dive into the patterns and get a feel for the problems being solved. By selectively implementing patterns into your designs upfront, you will alleviate the need for constant refactoring and in turn create applications that are based on proven best practices.

New development tools are coming to market that embrace patterns as part of the design process. The OptimalJ product by Compuware implements Sun's core J2EE design patterns which are embedded into the application framework. Microsoft's Visual Studio product includes enterprise templates that include both design and code patterns.

In conclusion, design patterns are the best way to reduce development time, improve quality and embrace best practices. They provide a common language for designers, architects and developers to share knowledge across platforms and problem domains.

...............................................................................

For more information on related topics visit the following related portals...
DW Design, Methodology.

Robert Wegener is the director of solutions for RCG Information Technology's Web services. He has more than 20 years of information and business engineering experience in operations, customer service, transportation, finance, product development, telecommunications and information systems. Wegener also has extensive experience in various process and development methodologies, quality assurance and testing methodologies. He can be contacted by e-mail at rwegener@rcgit.com.

Solutions Marketplace
Provided by IndustryBrains

SAP Software Migration for Customers
If your current applications are at risk, SAP Safe Passage provides a clear roadmap for solution migration with maintenance support & integration technology. View free demos now!

Dedicated Server Hosting: High Speed, Low Cost
Outsource your web site and application hosting to ServePath, the largest dedicated server specialist on the West Coast. Enjoy better reliability and performance with our screaming-fast network and 99.999% uptime guarantee. Custom built in 24 hours.

Design Databases with ER/Studio: Free Trial
ER/Studio delivers next-generation data modeling. Multiple, distinct physical models based on a single logical model give you the tools you need to manage complex database environments and critical metadata in an intuitive user interface.

Data Quality Tools, Affordable and Accurate
Protect against fraud, waste and excess marketing costs by cleaning your customer database of inaccurate, incomplete or undeliverable addresses. Add on phone check, name parsing and geo-coding as needed. FREE trial of Data Quality dev tools here.

Data Mining: Strategy, Methods & Practice
Learn how experts build and deploy predictive models by attending The Modeling Agency's vendor-neutral courses. Leverage valuable information hidden within your data through predictive analytics. Click through to view upcoming events.

Click here to advertise in this space


E-mail This Column E-Mail This Column
Printer Friendly Version Printer-Friendly Version
Related Content Related Content
Request Reprints Request Reprints
Advertisement
advertisement
Site Map Terms of Use Privacy Policy
SourceMedia (c) 2005 DM Review and SourceMedia, Inc. All rights reserved.
Use, duplication, or sale of this service, or data contained herein, is strictly prohibited.