Learning path
Design Patterns learning path: everything to study, topic by topic
Comprehensive assessment covering the Gang of Four design patterns, SOLID principles, and pattern anti-patterns. Covers creational, structural, and behavioral patterns with emphasis on practical application, tradeoff analysis, and knowing when NOT to apply a pattern.
Short answer
To learn Design Patterns, work through 5 modules and 24 topics in the order they build on each other. It starts with Creational Patterns, then moves on to Structural Patterns and Behavioral Patterns. Use the map as a checklist, or measure your level and study only what is missing.
What you will study
Topics are grouped by module. Open one to see its objectives and key concepts.
1 · Creational Patterns5 topics
Singleton Pattern
Ensuring a class has only one instance and providing a global access point. Covers thread-safety concerns, lazy vs eager initialization, and testability tradeoffs.
Objectives
- Implement a thread-safe Singleton in your primary language
- Articulate when Singleton is appropriate versus when it creates problems
Key concepts
- single instance guarantee
- global access point
- thread-safe initialization
- lazy initialization
- eager initialization
- double-checked locking
- testability concerns
Factory Method Pattern
Defining an interface for creating objects but letting subclasses decide which classes to instantiate. Promotes loose coupling and the Open/Closed principle.
Objectives
- Implement Factory Method to decouple object creation from usage
- Distinguish Factory Method from Simple Factory and Abstract Factory
Key concepts
- creator class
- concrete creator
- product interface
- concrete product
- open/closed principle
- subclass responsibility
- loose coupling
Abstract Factory Pattern
Providing an interface for creating families of related objects without specifying their concrete classes. Useful for platform-independent UI components and product families.
Objectives
- Design an Abstract Factory for a cross-platform UI library
- Identify when Abstract Factory adds value versus when Factory Method suffices
Key concepts
- product family
- abstract factory interface
- concrete factory
- product variants
- consistency across products
- kit pattern
Builder Pattern
Separating the construction of a complex object from its representation, allowing the same construction process to create different representations.
Objectives
- Replace a telescoping constructor with a Builder
- Implement a fluent Builder for a complex configuration object
Key concepts
- step-by-step construction
- director class
- concrete builder
- fluent interface
- immutable objects
- telescoping constructor problem
- method chaining
Prototype Pattern
Creating new objects by copying an existing object (the prototype). Covers shallow vs deep copy semantics, clone registries, and performance implications.
Objectives
- Implement deep copy correctly for an object graph
- Choose between shallow and deep copy based on object relationships
Key concepts
- clone method
- shallow copy
- deep copy
- prototype registry
- copy constructor
- serialization-based clone
- copy semantics
2 · Structural Patterns7 topics
Adapter Pattern
Converting the interface of a class into another interface that clients expect. Covers class adapters (inheritance) vs object adapters (composition) and integration scenarios.
Objectives
- Implement an object Adapter to integrate a third-party library
- Choose between class and object adapter approaches with justification
Key concepts
- target interface
- adaptee
- class adapter
- object adapter
- interface mismatch
- legacy integration
- wrapper pattern
Bridge Pattern
Decoupling an abstraction from its implementation so the two can vary independently. Avoids the Cartesian product explosion of subclasses.
Objectives
- Refactor a class hierarchy explosion into a Bridge structure
- Explain when Bridge outperforms deep inheritance hierarchies
Key concepts
- abstraction hierarchy
- implementation hierarchy
- decoupling
- composition over inheritance
- orthogonal dimensions
- platform independence
Composite Pattern
Composing objects into tree structures to represent part-whole hierarchies. Lets clients treat individual objects and compositions uniformly.
Objectives
- Model a file system or UI widget hierarchy using Composite
- Implement recursive operations that work uniformly on leaves and composites
Key concepts
- component interface
- leaf node
- composite node
- tree structure
- recursive composition
- uniform treatment
- part-whole hierarchy
Decorator Pattern
Attaching additional responsibilities to an object dynamically. Provides a flexible alternative to subclassing for extending functionality.
Objectives
- Implement a Decorator chain for I/O stream enhancement
- Distinguish Decorator from inheritance-based extension
Key concepts
- component interface
- concrete component
- base decorator
- concrete decorator
- wrapping
- dynamic extension
- single responsibility
Facade Pattern
Providing a simplified interface to a complex subsystem. Reduces dependencies on internal components and promotes the Law of Demeter.
Objectives
- Design a Facade over a complex video encoding subsystem
- Identify when a Facade reduces coupling versus hiding necessary complexity
Key concepts
- simplified interface
- subsystem classes
- client decoupling
- Law of Demeter
- layered architecture
- API surface reduction
Flyweight Pattern
Using sharing to efficiently support large numbers of fine-grained objects. Separates intrinsic (shared) state from extrinsic (context-specific) state.
Objectives
- Separate intrinsic from extrinsic state in a character rendering system
- Quantify memory savings from Flyweight vs naive instantiation
Key concepts
- intrinsic state
- extrinsic state
- flyweight factory
- object sharing
- memory optimization
- immutability
- context objects
Proxy Pattern
Providing a surrogate or placeholder for another object. Covers virtual proxies (lazy loading), protection proxies (access control), and remote proxies (RPC).
Objectives
- Implement a virtual proxy for expensive resource lazy loading
- Distinguish Proxy from Decorator and Adapter
Key concepts
- virtual proxy
- protection proxy
- remote proxy
- caching proxy
- subject interface
- lazy initialization
- access control
3 · Behavioral Patterns8 topics
Chain of Responsibility Pattern
Passing requests along a chain of handlers, where each handler decides whether to process the request or pass it to the next handler in the chain.
Objectives
- Build a logging or middleware pipeline using Chain of Responsibility
- Decide when CoR beats explicit if-else dispatch chains
Key concepts
- handler interface
- concrete handler
- request forwarding
- chain construction
- middleware pipelines
- decoupled sender/receiver
Command Pattern
Encapsulating a request as an object, enabling parameterization, queuing, logging, and undo/redo operations.
Objectives
- Implement undo/redo using the Command pattern
- Use Command to decouple UI actions from business logic
Key concepts
- command interface
- concrete command
- invoker
- receiver
- undo/redo stack
- macro commands
- command queue
- request encapsulation
Observer Pattern
Defining a one-to-many dependency so that when one object changes state, all its dependents are notified automatically. Foundation of event-driven systems.
Objectives
- Implement Observer for a stock price notification system
- Identify and fix observer memory leak scenarios
Key concepts
- subject/publisher
- observer/subscriber
- event notification
- loose coupling
- push vs pull model
- memory leaks in observers
- event bus
Strategy Pattern
Defining a family of algorithms, encapsulating each one, and making them interchangeable. Enables runtime algorithm selection without changing the context class.
Objectives
- Replace a switch-case dispatcher with a Strategy pattern
- Implement sorting or payment processing with interchangeable strategies
Key concepts
- strategy interface
- concrete strategy
- context class
- runtime substitution
- algorithm encapsulation
- first-class functions as strategies
- policy objects
Template Method Pattern
Defining the skeleton of an algorithm in a base class, deferring some steps to subclasses without changing the algorithm's overall structure.
Objectives
- Implement a data parser framework using Template Method
- Compare Template Method (inheritance) vs Strategy (composition)
Key concepts
- template method
- primitive operations
- hook methods
- Hollywood principle
- abstract operations
- concrete operations
- inheritance-based extension
State Pattern
Allowing an object to alter its behavior when its internal state changes. The object appears to change its class.
Objectives
- Model a vending machine or traffic light with the State pattern
- Refactor a conditional-heavy class into a State machine
Key concepts
- state interface
- concrete state
- context object
- state transitions
- finite state machine
- eliminating state flags
- behavior encapsulation per state
Mediator Pattern
Defining an object that encapsulates how a set of objects interact. Promotes loose coupling by preventing objects from referring to each other explicitly.
Objectives
- Replace a tangled object mesh with a Mediator
- Identify when Mediator creates a God Object anti-pattern
Key concepts
- mediator interface
- concrete mediator
- colleague objects
- centralized communication
- reduced coupling
- chat room analogy
- air traffic control analogy
Iterator Pattern
Providing a way to sequentially access elements of a collection without exposing its underlying representation.
Objectives
- Implement a custom Iterator for a tree traversal
- Explain the difference between internal and external iterators
Key concepts
- iterator interface
- concrete iterator
- aggregate interface
- internal vs external iteration
- lazy evaluation
- cursor position
- language-level iteration protocols
4 · SOLID Principles3 topics
Single Responsibility & Open/Closed Principles
SRP: a class should have only one reason to change. OCP: software entities should be open for extension but closed for modification. Underpins most pattern applications.
Objectives
- Split a God Class into cohesive single-responsibility classes
- Apply OCP by adding behavior via extension rather than modification
Key concepts
- single reason to change
- cohesion
- separation of concerns
- open for extension
- closed for modification
- plugin architecture
- abstraction as extension point
Liskov Substitution & Interface Segregation Principles
LSP: subtypes must be substitutable for their base types. ISP: clients should not be forced to depend on interfaces they do not use.
Objectives
- Identify and fix an LSP violation in an inheritance hierarchy
- Decompose a fat interface into role-specific interfaces
Key concepts
- behavioral subtyping
- contract preservation
- substitutability
- fat interface
- role interfaces
- interface pollution
- precondition/postcondition rules
Dependency Inversion Principle
High-level modules should not depend on low-level modules — both should depend on abstractions. Directly enables Dependency Injection and testable architectures.
Objectives
- Refactor a tightly coupled class to depend on abstractions
- Implement constructor injection and explain testability benefits
Key concepts
- high-level module
- low-level module
- abstraction dependency
- dependency injection
- IoC container
- constructor injection
- testability
5 · Pattern Anti-patterns & Selection1 topic
Pattern Selection & Anti-patterns
Knowing when NOT to use a pattern. Covers over-engineering, premature abstraction, pattern obsession, and common misapplications like Singleton abuse and inappropriate Visitor.
Objectives
- Recognize and remove unnecessary pattern complexity from a codebase
- Justify when a simple function or data structure outperforms a pattern
Key concepts
- over-engineering
- premature abstraction
- Singleton abuse
- Visitor complexity tax
- God Object mediator
- accidental complexity
- YAGNI principle
- cost-benefit of patterns
Levels: Junior, Mid, Senior, and Expert
Explain it in your own words
Graded by AI · no account · 1 questionNo options to guess from: you write, the AI grades against the topic's rubric and tells you what level your answer reads at.
Already studying Design Patterns?
The assessment measures topic by topic, and your plan skips what you already know.
Open to read. An account is only needed to be measured.
Frequently asked questions
Where should I start studying Design Patterns?
Start with Creational Patterns: Singleton Pattern, Factory Method Pattern, and Abstract Factory Pattern. The map orders topics by what they depend on, so each one prepares the next.
How long does a full Design Patterns assessment take?
A full assessment of this path takes about 55 minutes. Study time depends on where you start; a diagnostic shows which topics you can skip.
Do I need an account to use this page?
No. The map, objectives and key concepts are open. You only need an account to be measured, get your gap by topic and receive a plan.