Design patterns are reusable solutions to commonly occurring problems in software design. They fall into 3 categories: 🏗️ Creational Patterns How objects are created Singleton Ensures only one instance of a class exists throughout the app. javascriptclass Database { constructor() { if (Database.instance) return Database.instance; Database.instance = this; } } const db1 = new Database(); cons