patterns overview state pattern decorator pattern state and decorator patterns downloads references home
about three-ten software created with contact
Design Patterns: Overview  

What are design patterns?

Everyday, we see patterns in the environment around us. For example, you might note to a friend one day that his house is exactly like yours, except that your house has a sunroof over the patio. Or that your car is just like his, except his has a leather interior, gps navigation, and air conditioning.

Similarly, software developers encounter patterns in real-world application development. We see that the code we wrote to solve some past software design problem could be reused to solve another, after a few modifications. With that thinking, software developers-- most notably, the Group of Four-- established a set of software design patterns.

Design patterns are solutions to commonly encountered software design problems that programmers often face while developing real-world software applications. Due to software developers using and refining design patterns over time, these solutions have evolved, becoming increasingly flexible and robust in the process.

How are they useful?

Design patterns are immensely useful to programmers. By reusing design patterns, we, as programmers, are able to leverage the expertise of past programmers without being locked into a framework that's difficult to use or understand.

As well, design patterns provide a common lexicon for describing and discussing software systems with other software developers. Experienced software developers know instinctively not only how and when to use design patterns but also know the traits inherent to each pattern. This alleviates the need to describe every detail when communicating the relationships between objects and the methods they contain.

Simply put, design patterns allow us to design software that is not only flexible and reusable, but also provide us with the means to simplify communication with other software developers.