Design Patterns

What is a Design Pattern

A design pattern is a documented (semi-)best practice that has been applied successfully in multiple situations to solve a recurring problem. A pattern solves a particular problem, but its application may raise new problems. Some of these can be solved by other patterns.

The only key to learn patterns is to write code with them.

GoF Patterns

GoF book has 23 patterns as follows:

Creational Patterns (Abstract Factory, Builder, Factory Method, Prototype, Singleton)
Structural Patterns (Adapter, Bridge, Composite, Decorator(Wrapper), Facade, Flyweight, Proxy)
Behavioral Patterns (Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Specification, Template Method, Visitor)

Basic Patterns

Interface, Abstract Parent Class, Private Method, Accessor Method, Constant Data Manager, Immutable Object, Monitor

Collectional Patterns

Composite, Iterator, Flyweight, Visitor

Structural Patterns

Aggregate Enforcer, Explicit Object Release, Cache Object

Behavioral Patterns

Null Object, Object Authenticator, Common Attribute Registry

Structural Decomposition


Organization of Work


Access Control



Command Processor, View Handler


Forwarder-Receiver, Client-Dispatcher-Server, Publisher-Subscriber

Still Other Patterns

Callback (see broker and layer arch patterns), Object Group (see master slave), Cache Retrieval, PRG Pattern, Active Object

Core J2EE Patterns

Presentation Tier Patterns ( Intercepting Filter, Front Controller, Context Object, Application Controller, View Helper, Composite View, Service to Worker, Dispatcher View)
Business Tier Patterns (Business Delegate, Service Locator, Session Facade, Application Service, Business Object, Composite Entity, Transfer Object, Transfer Object Assembler, Value List Handler)
Integration Tier Patterns (Data Access Object, Service Activator, Domain Store, Web Service Broker )

Pattern catalog

All patterns in one big table.



Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License