{
  "@context": {
    "@vocab": "https://raw.githubusercontent.com/api-evangelist/design-patterns/main/vocabulary/design-patterns-vocabulary.json#",
    "schema": "https://schema.org/"
  },
  "name": "Design Patterns Vocabulary",
  "description": "Controlled vocabulary for the Gang of Four design patterns and core API design patterns.",
  "version": "1.0.0",
  "terms": [
    { "term": "DesignPattern", "definition": "A reusable solution to a commonly occurring problem within a given context in software design." },
    { "term": "CreationalPattern", "definition": "Pattern category concerned with object creation mechanisms." },
    { "term": "StructuralPattern", "definition": "Pattern category concerned with class and object composition." },
    { "term": "BehavioralPattern", "definition": "Pattern category concerned with communication between objects." },
    { "term": "FactoryMethod", "definition": "Defines an interface for creating an object but lets subclasses decide which class to instantiate." },
    { "term": "AbstractFactory", "definition": "Provides an interface for creating families of related or dependent objects." },
    { "term": "Builder", "definition": "Separates construction of a complex object from its representation." },
    { "term": "Prototype", "definition": "Creates new objects by copying an existing instance." },
    { "term": "Singleton", "definition": "Ensures a class has only one instance and provides a global point of access to it." },
    { "term": "Adapter", "definition": "Converts the interface of a class into another interface clients expect." },
    { "term": "Bridge", "definition": "Decouples an abstraction from its implementation so the two can vary independently." },
    { "term": "Composite", "definition": "Composes objects into tree structures to represent part-whole hierarchies." },
    { "term": "Decorator", "definition": "Attaches additional responsibilities to an object dynamically." },
    { "term": "Facade", "definition": "Provides a unified interface to a set of interfaces in a subsystem." },
    { "term": "Flyweight", "definition": "Uses sharing to support large numbers of fine-grained objects efficiently." },
    { "term": "Proxy", "definition": "Provides a surrogate or placeholder for another object to control access to it." },
    { "term": "ChainOfResponsibility", "definition": "Passes a request along a chain of handlers until one handles it." },
    { "term": "Command", "definition": "Encapsulates a request as an object, allowing parameterization, queueing, and undo." },
    { "term": "Iterator", "definition": "Provides a way to access elements of a collection sequentially without exposing its representation." },
    { "term": "Mediator", "definition": "Defines an object that encapsulates how a set of objects interact." },
    { "term": "Memento", "definition": "Captures an object's internal state so it can be restored later." },
    { "term": "Observer", "definition": "Defines a one-to-many dependency so observers are notified when the subject changes." },
    { "term": "State", "definition": "Allows an object to alter its behavior when its internal state changes." },
    { "term": "Strategy", "definition": "Defines a family of algorithms, encapsulates each one, and makes them interchangeable." },
    { "term": "TemplateMethod", "definition": "Defines the skeleton of an algorithm, deferring some steps to subclasses." },
    { "term": "Visitor", "definition": "Represents an operation to be performed on the elements of an object structure." },
    { "term": "HATEOAS", "definition": "API design constraint where responses include links that drive client navigation." },
    { "term": "IdempotencyKey", "definition": "Client-supplied identifier letting an API safely deduplicate retried requests." },
    { "term": "Webhook", "definition": "API design pattern where the server delivers events by HTTP request to a consumer-supplied URL." },
    { "term": "Saga", "definition": "Pattern for managing long-running distributed transactions through compensating actions." }
  ]
}
