O'Reilly logo
live online training icon Live Online training

Design Patterns Boot Camp

Topic: Software Development
Eric Freeman
Elisabeth Robson

Take your software design skills to the next level with design patterns—reusable, time-tested, and proven object-oriented solutions. With design patterns, rather than reinventing the wheel, you’ll draw on tried-and-true, road-tested designs that will make your software more flexible, reliable, and resilient to change.

Join Eric Freeman and Elisabeth Robson, co-authors of the industry’s “go to” book for learning design patterns, Head First Design Patterns, in a two-day course on the fundamentals of patterns. You’ll learn soup to nuts about patterns and everything you need to understand them and use them in your own code. You’ll also get a great overview of the OO principles behind all patterns, and the foundational patterns from the Gang of Four.

What you'll learn-and how you can apply it

By the end of this live, online course, you’ll understand:

  • What design patterns are, where they came from
  • How design patterns are solutions you apply, not code libraries you download
  • The key object-oriented design principles that underlie design patterns
  • How to read a design pattern and apply the pattern to your code design
  • What the Gang of Four (GoF) fundamental patterns are all about

And you’ll be able to:

  • Improve your object-oriented designs, making them more flexible, maintainable, and resilient
  • Use the power of a shared vocabulary to improve your team’s collaboration and workflow

This training course is for you because...

  • You’re a software developer with some experience developing object-oriented systems and you want to take your design skills to the next level
  • You’re a software developer who wants to better understand the patterns used in common frameworks and libraries
  • You work in a team and you want to understand patterns so as to better communicate and work with other team members
  • You manage software developers and you want to be able to work with them to build more maintainable and resilient software


  • Familiarity and experience with object-oriented programming
  • Experience with Java, or an object-oriented language

Materials or downloads needed in advance

Example Java code will be supplied; it is not necessary for you to run the code during class.

Participants receive:

  • Code examples in Java
  • Exercises and solutions
  • Post-workshop video
  • Written course book material

Recommended Preparation:

Learning Object-Oriented Programming

Head First Design Patterns

About your instructors

  • Eric Freeman is a computer scientist, technology writer, and entrepreneur. Previously, he was a CTO at the Walt Disney Company. Eric’s most recent book, Head First Learn to Code, is a beginner’s guide to coding and computational thinking. Eric lives with his wife and young daughter in Austin, Texas. He holds a PhD in computer science from Yale University.

  • Elisabeth Robson is the co-author of several Head First books, including Head First Design Patterns, and is a principal at WickedlySmart, an online learning company for software developers.


The timeframes are only estimates and may vary according to how the class is progressing

Day One

Introduction to patterns

  • What are software patterns?
  • Where did patterns come from?

Object-oriented review

  • Object-oriented concepts
  • Object-oriented diagram quickstart

Exploring a pattern

  • Walkthrough of a problem needing a pattern
  • Getting some inspiration from design principles
  • Using the strategy pattern

Patterns, more formally

  • How patterns are formally defined
  • How to read and use a pattern definition

Exploring patterns further

  • Why we need patterns
  • Power of patterns as shared vocabularies
  • What patterns aren’t
  • The Gang of Four patterns

Object-oriented principles

  • How principles relate to design patterns
  • The SOLID principles
  • How patterns help you incorporate principles into your code

Day Two

Being ready for change in your code

  • Learn the one constant in software development
  • How design patterns allow us to deal with change
  • Using the iterator pattern to deal with change

Keeping your code open for extension, closed for modification

  • Learning the open/closed principle
  • Understanding the decorator pattern

Avoiding tightly coupled designs

  • The design principle of loose coupling
  • Exploring loose coupling with the observer pattern

Additional Gang of Four patterns as time allows

Compound patterns

  • What are compound patterns?
  • The model-view-controller pattern

Using patterns in the real world

  • Categories of patterns
  • Pattern catalogs