KNOWLEDGE = {
    "singleton": "Ensure a class has only one instance and provide a global point of access to it.",
    "factory": "Define an interface for creating an object, but let subclasses decide which class to instantiate.",
    "builder": "Separate the construction of a complex object from its representation so that the same construction process can create different representations.",
    "prototype": "Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.",
    "observer": "Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.",
    "strategy": "Define a family of algorithms, encapsulate each one, and make them interchangeable.",
    "adapter": "Convert the interface of a class into another interface clients expect.",
    "decorator": "Attach additional responsibilities to an object dynamically.",
    "facade": "Provide a unified interface to a set of interfaces in a subsystem.",
    "dependency injection": "A technique in which an object receives other objects that it depends on, decoupling creation from usage.",
    "proxy": "Provide a surrogate or placeholder for another object to control access to it."
}