Thuta Learning
AdvancedProgrammingbeginner

Design Patterns

Relax. We'll talk through this in plain words — no textbook voice.

Design Patterns are reusable solutions for solving common programming problems.

🎨 Common Patterns:

Module Pattern: Encapsulation

Singleton: One instance only

Factory: Object creation

Observer: Event subscription

javascript
// 1. Module Pattern (Encapsulation)
const Calculator = (function() {
    // Private variable
    let result = 0;
    
    // Public methods
    return {
        add(n) {
            result += n;
            return this;
        },
        subtract(n) {
            result -= n;
            return this;
        },
        getResult() {
            return result;
        },
        reset() {
            result = 0;
            return this;
        }
    };
})();

Calculator.add(10).add(5).subtract(3);
console.log(`Result: ${Calculator.getResult()}`);

// 2. Singleton Pattern
const Database = (function() {
    let instance;
    
    function createInstance() {
        return { connection: "MySQL Connection" };
    }
    
    return {
        getInstance() {
            if (!instance) {
                instance = createInstance();
            }
            return instance;
        }
    };
})();

const db1 = Database.getInstance();
const db2 = Database.getInstance();
console.log(db1 === db2); // true (same instance)
You should see
Result: 12 true
Design Patterns | Thuta Learning