GoF Design Patterns
Goal
-
Choose the simplest design that solves the real change pressure.
-
Select one primary pattern (two only if responsibilities are clearly split).
-
Keep recommendations language-agnostic and explicit about tradeoffs.
-
Support coding tasks with pattern-aligned implementation guidance.
Simple Workflow
-
Capture context with three questions: what changes often, what hurts now, and which constraint dominates.
-
Shortlist up to three candidates using references/DECISION_FRAMEWORK.md (canonical source). Use references/CATALOG.md only for quick intent lookup.
-
Select one pattern (or do not use a pattern ) based on future change-cost reduction and lower indirection.
-
If the task includes code changes, always read both:
-
references/pattern-<selected-pattern>.md
-
scripts/<selected-pattern>.ts (illustrative reference only)
-
Apply the design incrementally, adapted to the project language and constraints.
-
Validate with references/PITFALLS.md , then run a final quality/activation self-check with references/TESTS.md , and format the answer with references/OUTPUT_TEMPLATES.md .
Core Rules
-
Language first: choose by problem forces and context, not by language syntax.
-
Simplicity first: if recurring change pressure is weak, explicitly recommend do not use a pattern .
-
Script policy: scripts are examples to read and adapt, not mandatory to execute.
Output Contract
-
Always provide an explicit decision.
-
Always include one simpler alternative and why it was rejected.
-
Always include tradeoffs (Pros and Cons ).
-
If code is shown, include a short adaptation note for other languages.
Navigation
Core References
-
Decision Framework
-
Catalog
-
Pitfalls and Anti-Patterns
-
Output Templates
-
Trigger Tests
Pattern Cards
-
Abstract Factory
-
Adapter
-
Bridge
-
Builder
-
Chain of Responsibility
-
Command
-
Composite
-
Decorator
-
Facade
-
Factory Method
-
Flyweight
-
Interpreter
-
Iterator
-
Mediator
-
Memento
-
Observer
-
Prototype
-
Proxy
-
Singleton
-
State
-
Strategy
-
Template Method
-
Visitor