Day 44

Design Patterns — Factory Pattern

10 min
JavaScript 100 Days

Factory pattern object creation ko abstract karta hai. Caller ko exactly kaunsa class use ho rahi hai — yeh nahi pata. Code flexible aur extensible hota hai.

Factory Function

Objects create karne ka flexible tarika.

factory.js
javascript
// Factory function
function createUser(type, name, email) {
  const base = { name, email, createdAt: new Date() };
  
  const roles = {
    admin: { role: "admin", permissions: ["read", "write", "delete"] },
    editor: { role: "editor", permissions: ["read", "write"] },
    viewer: { role: "viewer", permissions: ["read"] },
  };
  
  if (!roles[type]) throw new Error(`Unknown user type: ${type}`);
  
  return { ...base, ...roles[type] };
}

let admin = createUser("admin", "Zohaib", "z@test.com");
let viewer = createUser("viewer", "Ali", "ali@test.com");

console.log(admin.permissions); // ["read", "write", "delete"]
console.log(viewer.permissions); // ["read"]

🎯 Practice Challenge

NotificationFactory banao — email, SMS, push notifications create karo. Har type ka send() method alag kaam kare.