System Design · core
Decorator & Structural
Decorator, adapter, composite.
Mental model
The decorator pattern wraps an object in another object with the same interface, adding behavior without subclassing. It shines when feature combinations explode — instead of one class per combination, you stack small decorators.
How to study Decorator & Structural
Begin by restating the mental model in your own words, then connect it to a concrete system you have built or operated. Name the mechanism, the constraint it addresses, and the trade-off it introduces. Use Refactoring Guru — Decorator to check details, but close the source before writing your explanation. Retrieval is the learning step; rereading is only preparation.
Next, compare Decorator & Structural with the neighboring concepts in its roadmap. Ask what changes in correctness, latency, resource use, operability, and failure recovery. Complete Coffee-shop order decorator and preserve the command, input, output, and one failed attempt as evidence. Finish by explaining the idea without jargon to someone who has not studied the track.
Proof of understanding
- Explain the mechanism from first principles and identify the state it reads or changes.
- Give one situation where the concept is the right choice and one where it is not.
- Predict a realistic failure mode before running the drill, then compare the prediction with evidence.
- Connect the result to a roadmap or build artifact instead of treating the concept as isolated trivia.
Learn from primary sources
Practice and explain it back
Coffee-shop order decorator
Model a coffee order with milk / sugar / whip add-ons via the decorator pattern. cost() and description() should compose automatically.
Expected evidence: Base Beverage + 3 decorators, plus a sample order chain and its computed cost.
Open the interactive drill →Review prompts
- Why does decoration beat subclassing when features combine, and what does it cost?
Build evidence
Use a roadmap capstone to turn this concept into working evidence.
Prerequisites
Related concepts
None assigned yet.