Disciplined Agile

The Design Patterns Repository

Design patterns are not “reusable solutions” but instead create a rich language developers use to communicate, collaborate, and make collective decisions about design. When you study design patterns you are teaching yourself what good design is, and why.  

This repository delineates each pattern according to three kinds of forces:

  1. Contextual Forces which help you to discover the appropriate pattern for the problem you are trying to solve
  2. Implementation Forces, which show you options and concerns when implementing each pattern
  3. Consequent Forces, which help you to evaluate the cost/benefit of each pattern as well as how to unit test it

The "original seed" material for this repository was taken directly from appendix B of Scott Bain's book Emergent Design: The Evolutionary Nature of Professional Software Development


Patterns By Encapsulation

Behavior Strategy Bridge Template Method Null Object __
Sequence Decorator Chain of Responsibility Template Method __ __
Workflow Template Method Visitor Bridge Null Object __
Cardinality Decorator Chain of Responsibility Proxy Observer Composite
Construction Singleton Abstract Factory Builder __ __
Selection Chain of Responsibility __ __ __ __
Structure Composite Template Method __ __ __
Entity Facade Adapter Proxy __ __
Relationships Observer Command Mediator Visitor __
Dependencies Mock Object __ __ __ __