What pattern does this factory function demonstrate?
function createUser(name, role) {
// Common properties and methods
const user = {
name,
role,
createdAt: new Date(),
getId() { return this.id; }
};
// Role-specific customization
if (role === 'admin') {
user.permissions = ['read', 'write', 'delete'];
user.isAdmin = true;
} else if (role === 'editor') {
user.permissions = ['read', 'write'];
user.isAdmin = false;
} else {
user.permissions = ['read'];
user.isAdmin = false;
}
return user;
}
This factory function demonstrates conditional object configuration: 1) It creates objects with a common base structure, 2) It then conditionally adds or modifies properties based on parameters, 3) This allows for flexible object creation that adapts to different requirements, 4) It centralizes the logic for creating different variants of similar objects, 5) It's more maintainable than having separate factories for each role, 6) This pattern is useful when objects need different features based on certain conditions.