Rethinking Production Tools — Week 7

Design Patterns

When an architect sits down to design a building, he or she must consider the purpose of the building and then begin to organize its overall functionality into a series of interrelated subsystems. Similarly, in software architecture, we can draw on a set of time-tested building blocks called design patterns.

A canonical set of design patterns was first formalized in Design Patterns: Elements of Reusable Object-Oriented Software, also known as the "Gang of Four" (GoF) patterns. The patterns fall into three categories.

Creational Patterns

Used to instantiate entities or groups of related entities.

  • Abstract Factory — Creates an instance of several families of classes.
  • Builder — Separates object construction from its representation.
  • Factory Method — Creates an instance of several derived classes.
  • Object Pool — Avoids expensive acquisition/release of resources by recycling objects.
  • Prototype — A fully initialized instance to be copied or cloned.
  • Singleton — A class of which only a single instance can exist.

Structural Patterns

Used to broker the relationships between entities, generally to specify entity composition.

  • Adapter — Match interfaces of different classes.
  • Bridge — Separates an object's interface from its implementation.
  • Composite — A tree structure of simple and composite objects.
  • Decorator — Add responsibilities to objects dynamically.
  • Facade — A single class that represents an entire subsystem.
  • Flyweight — A fine-grained instance used for efficient sharing.
  • Private Class Data — Restricts accessor/mutator access.
  • Proxy — An object representing another object.

Behavioral Patterns

Used in the assignment of responsibilities to entities, generally to specify communication patterns between entities.

  • Chain of Responsibility — A way of passing a request between a chain of objects.
  • Command — Encapsulate a command request as an object.
  • Interpreter — A way to include language elements in a program.
  • Iterator — Sequentially access the elements of a collection.
  • Mediator — Defines simplified communication between classes.
  • Memento — Capture and restore an object's internal state.
  • Null Object — Designed to act as a default value of an object.
  • Observer — A way of notifying change to a number of classes.
  • State — Alter an object's behavior when its state changes.
  • Strategy — Encapsulates an algorithm inside a class.
  • Template Method — Defer the exact steps of an algorithm to a subclass.
  • Visitor — Defines a new operation to a class without change.

Links & Resources

Assignment

Work on the deliverables from the stand-up meeting.