Appearance
抽象工厂模式
抽象工厂不直接生成实例,而是用于对产品类簇的创建
javascript
class User{
constructor(name, role, pages){
this.name = name
this.role = role
this.pages = pages
}
welcome(){
console.log("欢迎回来",this.name)
}
dataShow(){
// abstract
throw new Error("抽象方法需要被实现")
}
}
class SuperAdmin exteds User{
constructor(name){
super(name, "superadmin", ["home","user-manage", "right-manage", "news-manage"])
}
dataShow(){
console.log("superadmin-datashow")
}
addRight(){}
addUser(){}
}
class Admin exteds User{
constructor(name){
super(name, "superadmin", ["home","user-manage", "news-manage"])
}
dataShow(){
console.log("superadmin-datashow")
}
addUser(){}
}
class Editor exteds User{
constructor(name){
super(name, "superadmin", ["home","news-manage"])
}
dataShow(){
console.log("superadmin-datashow")
}
}
function getAbstractUserFactory(role){
switch(role){
case "superadmin":
return SuperAdmin
case "admin":
return Admin
case "editor":
return Editor
default:
throw new Error("参数错误")
}
}
let userClass = getAbstractUserFactory("superadmin")
// console.log(userClass)
let user = new UserClass("tom")
// user.dataShow()
// user.welcome()