Day 44 Design Patterns — Factory Pattern
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 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.