Structural Patterns  «Prev  Next»
Lesson 1

Introduction to Structural Design Patterns

This module explores structural patterns, patterns that use composition to merge objects and classes into larger structures. A good toolbox of structural patterns allows you to solve many thorny problems you are likely to encounter.
They show you how to glue different pieces of a system together in a flexible and extensible fashion. Structural patterns help you guarantee that when one of the parts changes, the entire structure does not need to change.
They also show you how to recast pieces that do not fit (but that you need to use) into pieces that do fit.
In this module, you will learn:
  1. How programmers use structural patterns
  2. The characteristics of some commonly used structural patterns
  3. When and when not to use the Flyweight pattern
  4. How the Flyweight pattern can help with your course project

List of Structural Design Patterns

  1. Adapter: Adapts one interface for a class into one that a client expects
  2. Bridge: Decouple an abstraction from its implementation so that the two can vary independently
  3. Composite: A tree structure of objects where every object has the same interface
  4. Decorator : Add additional functionality to a class at runtime where subclassing would result in an exponential rise of new classes
  5. Facade: Create a simplified interface of an existing interface to ease usage for common tasks
  6. Flyweight: A high quantity of objects share a common properties object to save space
  7. Proxy: A class functioning as an interface to another thing


  1. Aggregate: A version of the Composite pattern with methods for aggregation of children
  2. Extensibility: also known as Framework - hide complex code behind a simple interface
  3. Pipes and filters: A chain of processes where the output of each process is the input of the next
  4. Private class data: Restrict accessor/mutator access