简介
由一个工厂对象决定创建某一种产品对象类的实例,主要用来创建同一类对象。
ES5
function UserFactory(role) {
function User(role, pages) {
this.role = role;
this.pages = pages;
}
switch (role) {
case "superadmin":
return new User("superadmin", [
"home",
"user-manage",
"right-manage",
"news-manage",
]);
break;
case "admin":
return new User("admin", ["home", "user-manage", "news-manage"]);
break;
case "editor":
return new User("editor", ["home", "news-manage"]);
break;
default:
throw new Error("参数错误");
}
}
let user = new UserFactory("admin");
ES6
class User {
constructor(role, pages) {
this.pole = role;
this.pages = pages;
}
static UserFactory(role) {
switch (role) {
case "superadmin":
return new User("superadmin", [
"home",
"user-manage",
"right-manage",
"news-manage",
]);
break;
case "admin":
return new User("admin", ["home", "user-manage", "news-manage"]);
break;
case "editor":
return new User("editor", ["home", "news-manage"]);
break;
default:
throw new Error("参数错误");
}
}
}
let user = User.UserFactory("admin");