Skip to main content

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.

5
modules
24
topics
55
min to assess

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 question

No options to guess from: you write, the AI grades against the topic's rubric and tells you what level your answer reads at.

0 / 600

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.