I've been a zone leader with DZone since 2008, and I'm crazy about community. Every day I get to work with the best that JavaScript, HTML5, Android and iOS has to offer, creating apps that truly make at difference, as principal front-end architect at Avego. James is a DZone Zone Leader and has posted 639 posts at DZone. You can read more from them at their website. View Full User Profile

Design Patterns Uncovered: Series Overview

  • submit to reddit

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. 




Manuel Jordan replied on Wed, 2010/06/23 - 7:15pm

Thanks a lot for the work, DZone is an excellent place

Byju Veedu replied on Thu, 2010/06/24 - 12:46am

  Thanks for your effort to cover all the 23 patterns in java . It will be a good reference .

Sourabhh Sharma replied on Thu, 2010/06/24 - 12:59am

Thanks James. This series is real GEM on DZone.

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

Good series of posts James.  The Refcard looks good also.

Muhammad Khojaye replied on Thu, 2010/06/24 - 5:28am

Thanks James for sharing this :).

Manuel Jordan replied on Thu, 2010/06/24 - 8:54am

Seems that one pattern is missing, mmm, I recall If my memory doesn't fail me, that in the GoF book are 24 patterns

Bino B. Manjasseril replied on Fri, 2010/06/25 - 3:12pm

Helpful series. bookmarking it as reference. Thanks!

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.



Deepak Varier replied on Mon, 2010/12/20 - 4:29am


1st Prize

Easy-to-understand, well-explained articles. Appreciate your efforts. Thanks a lot!

Tire Works replied on Thu, 2011/08/04 - 10:13am

I have a little bit confusion about the design patterns, but overall it's looks great. -Tire Works 

Aayush Jain replied on Wed, 2014/08/06 - 11:10am

I guess Creational patterns heading is misplaced by Behavioural and vice-versa :P . Nevertheless, this is a very informative and comprehensive post.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.