Este documento describe tres patrones de diseño: Decorator, FlyWeight y Template Method. Decorator permite agregar dinámicamente funcionalidades a objetos sin herencia. FlyWeight reduce redundancia al compartir información común entre objetos. Template Method define la estructura de un algoritmo en una superclase para que las subclases redefinan ciertos pasos.