Appearance
工厂模式
一个工厂对象决定创建某种产品实例。主要创建同一类对象。
- 优点
只需少量参数即可获取结果,不必关心内部实现
- 缺点
但是内部新增构造函数还需要增加判断逻辑代码,当判断项过多的时候,函数会变得非常臃肿
- 适用情况
少量判断即可创建对象的场景
小例子
判断用户权限,根据不同权限,侧边栏显示不同菜单项
javascript
class User{
constructor(role, pages){
this.role = role
this.pages = pages
}
// static静态,可以直接类名.方法
static UserFactory(role){
switch(role){
case "superadmin":
return new User("superadmin", ["home","user-manage", "right-manage", "news-manage"])
case "admin":
return new User("admin", ["home","user-manage", "news-manage"])
case "editor":
return new User("editor", ["home","news-manage"])
default:
return new User("no", ["home"])
}
}
}
var user = User.UserFactory("admin");