How dotnet-labs/headfirstdesignpattern works
This repository is a collection of runnable Head First design-pattern exercises, not one integrated application. Each example program demonstrates a pattern through a small domain scenario, such as ordering pizza, printing menus, operating a gumball machine, or simulating ducks. The graph groups examples by pattern role and shows only workflows supported by the sampled programs or the README; several implementation details are represented by their exact enclosing directories because their source was not sampled.
Main entry points: DecoratorPattern/Program.cs Coffee demo · ObserverPattern/Program.cs Weather demo · IteratorPattern/Program.cs Menu iterator demo · PizzaStore Pizza stores
Components 34
Behavioral Patterns
- Duck demo
StrategyPattern/Program.cs - Duck behaviors
StrategyPattern/Duck - Weather demo
ObserverPattern/Program.cs - Weather subject
ObserverPattern/Weatherdata.cs - Weather displays
ObserverPattern - Remote demo
CommandPattern/Program.cs - Remote controls
CommandPattern/RemoteControl - Device commands
CommandPattern/RemoteControl/Commands - Controlled devices
CommandPattern/RemoteControl/Commands - Menu iterator demo
IteratorPattern/Program.cs - Menus and iterators
IteratorPattern/Menu - Menu printer
IteratorPattern/Waitress/Waitress.cs - Gumball demo
StatePattern/Program.cs - Gumball machine
StatePattern/GumballMachines/GumballMachine.cs - Machine states
StatePattern/States
Creational Patterns
- Pizza demo
FactoryPattern/Program.cs - Pizza stores
FactoryPattern/PizzaStore - Pizza products
FactoryPattern/PizzaProduct - Ingredient factories
FactoryPattern/PizzaIngredient - Boiler demo
SingletonPattern/Program.cs - Chocolate boiler
SingletonPattern/ChocolateBoiler.cs
Structural Patterns
- Coffee demo
DecoratorPattern/Program.cs - Coffee beverages
DecoratorPattern/Coffee/Beverages - Coffee add-ons
DecoratorPattern/Coffee/Condiments - Size decorators
DecoratorPattern/Coffee/Sizes - Menu composition demo
CompositePattern/Program.cs - Menu hierarchy
CompositePattern/MenuComponent - Menu printer
CompositePattern/Waitress/Waitress.cs - Proxy examples
ProxyPattern
Compound Example
- Duck simulator
CompoundPattern/Program.cs - Simulation scenarios
CompoundPattern/DuckSimulator.cs - Duck factories
CompoundPattern/DuckFactory - Duck flocks
CompoundPattern/Flock/Flock.cs
Other components
- Example runner
Connections 34
- Example runner → Duck demo: runs demo
- Duck demo → Duck behaviors: sets behavior
- Example runner → Weather demo: runs demo
- Weather demo → Weather subject: creates subject
- Weather demo → Weather displays: creates displays
- Weather subject → Weather displays: notifies
- Example runner → Remote demo: runs demo
- Remote demo → Remote controls: runs tests
- Remote controls → Device commands: dispatches
- Device commands → Controlled devices: operates
- Example runner → Menu iterator demo: runs demo
- Menu iterator demo → Menus and iterators: creates menus
- Menu iterator demo → Menu printer: prints menu
- Example runner → Gumball demo: runs demo
- Gumball demo → Gumball machine: operates
- Gumball machine → Machine states: delegates actions
- Example runner → Pizza demo: runs demo
- Pizza demo → Pizza stores: orders pizza
- Pizza stores → Pizza products: creates
- Pizza stores → Ingredient factories: uses
- Example runner → Boiler demo: runs demo
- Boiler demo → Chocolate boiler: gets instance
- Example runner → Coffee demo: runs demo
- Coffee demo → Coffee beverages: creates beverage
- Coffee demo → Coffee add-ons: wraps beverage
- Coffee demo → Size decorators: adds size
- Example runner → Menu composition demo: runs demo
- Menu composition demo → Menu hierarchy: builds hierarchy
- Menu composition demo → Menu printer: prints menu
- Example runner → Proxy examples: explores pattern
- Example runner → Duck simulator: runs demo
- Duck simulator → Simulation scenarios: runs scenarios
- Simulation scenarios → Duck factories: uses factory
- Simulation scenarios → Duck flocks: simulates flocks