Design Patterns Uncovered: Series Overview
Last week we completed the last of the 23 part design pattern series. This article brings all of those patterns together for your reference.
Design Patterns Refcard
For a great
overview of the most popular design patterns, DZone's Design
Patterns Refcard is the best place to start.
Creational Patterns
Used to construct objects such that they can be decoupled from their implementing system.
- Chain of Responsibility
Gives more than one object an opportunity to handle a request by linking receiving objects together.
- Command
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations
- Interpreter
Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language. - Iterator
Provides a way to access the elements of an aggregate object without exposing its underlying representation. - Mediator
Allows loose coupling by encapsulating the way disparate sets of objects interact and communicate with each other. Allows for the actions of each object set to vary independently of one another.
- Memento
Captures and externalizes an object's internal state so that it can be restored later, all without violating encapsulation. - Observer
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. - State
Allows an object to alter its behaviour when its internal state changes. The object will appear to change its class. - Strategy
Defines a set of encapsulated algorithms that can be swapped to carry out a specific behaviour

- Template Method
Defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure.
- Visitor
Allows for one or more operation to be applied to a set of objects at runtime, decoupling the operations from the object structure.
Structural Patterns
Used to form large object structures between many disparate objects.
- Adapter
Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces. - Bridge
Decouple an abstraction from its implementation so that the two can vary independently
- Composite
Allows you to compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. - Decorator
Allows for the dynamic wrapping of objects in order to modify their existing responsibilities and behaviours
- Facade
Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use. - Flyweight
Facilitates the reuse of many fine grained objects, making the utilization of large numbers of objects more efficient.
- Proxy
Allows for object level access control by acting as a pass through entity or a placeholder object.
Behavioral Patterns
Used to manage algorithms, relationships and responsibilities between objects.
- Abstract Factory
Provides an
interface for creating families of related or dependent objects without
specifying their concrete classes.
- Builder
Allows for object level access control by acting as a pass through entity or a placeholder object.
- Factory Method
Define an
interface for creating an object, but let the subclasses
decide which class to instantiate. The Factory method lets a class
defer instantiation to subclasses - Prototype
Create objects based on a template of an exsiting object through cloning. - Singleton
Ensure a class has only one instance and provide a global point of access to it.
Design Patterns Refcard
For a great
overview of the most popular design patterns, DZone's Design
Patterns Refcard is the best place to start.






Comments
Manuel Jordan replied on Wed, 2010/06/23 - 7:15pm
Byju Veedu replied on Thu, 2010/06/24 - 12:46am
Sourabh Sharma replied on Thu, 2010/06/24 - 12:59am
Jose Maria Arranz replied on Thu, 2010/06/24 - 2:28am
Thanks for this work, this kind of things are the most interesting part of "programming art"
John Turner replied on Thu, 2010/06/24 - 4:28am
Muhammad Khojaye replied on Thu, 2010/06/24 - 5:28am
Manuel Jordan replied on Thu, 2010/06/24 - 8:54am
Bino B. Manjasseril replied on Fri, 2010/06/25 - 3:12pm
Anilkumar G.t replied on Fri, 2010/09/17 - 12:39am
Hi James,
Great series....thanks for all your effort.
A correction : The headings for Behavioral and Construction Patterns have been interchanged...so that need to be fixed.
Regards,
GT
Deepak Varier replied on Mon, 2010/12/20 - 4:29am
Easy-to-understand, well-explained articles. Appreciate your efforts. Thanks a lot!
Tire Works replied on Thu, 2011/08/04 - 10:13am