By Joshua Kerievsky, Brian Foote

This is our pick of the nine most important Design Patterns that every good object-oriented software engineer ought to know. Pattern gurus Joshua Kerievsky and Brian Foote guide you through this interactive, hands-on album, filled with video, quizzes, and challenging exercises. Learn Composed Method, Template Method, Factory Method, Strategy, Composite, Builder, Command, Null Object and Adapter.

Get this Album

Volume Licensing

Have Any Questions?


Instant Critiques: Take a refactoring exercise and get instant feedback from our automated band of experts. Learn more...
Let The Good Designs Roll: Improve your software designs by learning 9 practical design patterns. Learn more...

Expert Videos: Learn tools & techniques by watching short videos from industry experts. Learn more...
Integrated Forums: Ask questions, get expert replies and read fascinating discussions. Learn more...


  • 3-5 hours of content
  • 108 Pages
  • 21 Interactive Quizzes
  • 13 videos
  • Exercise: Refactoring to Three Patterns


Composed Method 3
The Essence of Composed Method 🎦 4
Composition and Performance 5
Composed Method: The Players 6
The Importance of Storytelling 7
Guidelines For Creating Composed Methods 8
Composed Method Motivation 9
Composed Method Objections 10
Template Method 12
The Essence of Template Method 🎦 ← Click to Preview 13
Template Method: An Example 14
How Mike the Scalper Scores Tickets 15
A Template Method for Scoring Tickets 16
Template Method Players ← Click to Preview 17
Putting Meat on the Bones 18
Hackers and Customers Quiz 19
Refactoring to a Template Method 20
Composed Methods vs. Template Methods 21
To Override Or Not To Override? 22
Factory Method 24
The Essence of Factory Method 🎦 25
Factory Method Players 26
Creation Methods and Factory Methods 27
Factory Method: Fact or Fiction? 28
Example Code 29
The Ministry Of Software 🎦 ← Click to Preview 30
Factory Method: Portfolio Quiz 31
Factory Method: Coupling Quiz 32
Strategy 34
The Essence of the Strategy Pattern 🎦 35
Avoiding a Subclass Explosion 36
Strategy: The Players 37
Strategy: A Simple Problem 38
Collaboration and Encapsulation 39
Cooperation and Visibility 40
Passing Data as Parameters 41
Passing the Entire Context 42
Internal Organs 43
Pluggable Guts 44
Starting Your Own Family 45
Strategy: A Question of Values 46
Strategy: Freedom from Choice 47
Strategy: Sharing Your Strategies 48
Strategy: Accommodating Variety 49
Composite 51
Essence of the Composite Pattern ← Click to Preview 52
The One/Many Distinction 53
Refactoring A One/Many Distinction 54
Composite Players 55
JUnit: A Classic Composite 56
XML: A Natural Composite 57
Know Your Composites 58
Builder 60
Why Do We Love Builders? 61
Complicated, Repetitive and Verbose Composite Construction 62
TagNode: What Needs Improvement? 63
Which TagBuilder Is Better? 64
Understanding TagBuilder 65
Building Different Products Using Identical Construction Steps 66
Builder: The Players 67
Decoupling Construction Logic With A Builder 68
Builder Quiz 69
Command 71
Command Essence ← Click to Preview 72
A Classic Example 73
Command: The Players 74
Executing and Unexecuting Commands 75
Null Object 77
Too Many Null Checks! 78
Null Object To The Rescue! 79
When Is A Null Object Unnecessary? 80
Null Object Players ← Click to Preview 81
Much Ado About Nothing 82
Adapter 84
Adapter: The Essence 85
Adapter: The Players 86
Adapter Example 87
Two-Way Adapters 88
Adapter: The Quiz 89
In Need Of An Adapter ← Click to Preview 91
Choosing A Preferred Interface 92
Problem Source Code 93
Refactoring Guidance 94
Critiquing Your Performance 95
Download, Build & Test Instructions 96
Upload Your Exercise 97
A Graph of Your Refactoring & Testing Activity 98
Your Critique Results 99
Your Customized Feedback 100
Solution Video Step 1: Extract Interface ← Click to Preview 101
Solution Video Step 2: Extract Class 102
Solution Video Step 3: Move Method 103
Solution Video Step 4: Implement Interface 104
Solution Video Step 5: Pull Up Fields & Methods 105
Solution 106
Recommended Books 108

Related Items

Supported Browsers

  • Latest Firefox
  • Internet Explorer 8+
  • Latest Chrome
  • Latest Safari

Operating Systems

  • Windows
  • Linux
  • Mac OS X

Development Tools

All of our programming exercises come with projects pre-configured for IntelliJ, Eclipse and Visual Studio.

Speakers or headphones are required for our videos.