# 工厂模式
什么是
工厂模式是由一个方法来决定到底要创建哪个类的实例,而这些实例经常都拥有相同的接口。
这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。
# 分类和区别
类型 | 描述 |
---|---|
简单工厂 | 简单工厂是将创建对象的步骤放在父类进行 |
工厂方法 | 工厂方法是延迟到子类中进行 |
/ | 它们两者都可以总结为:“根据传入的字符串来选择对应的类”。 |
# 具体实现
TIP
实现简单工厂
var UserFactory = function (role) {
function Admin() {
this.name = "管理员";
this.viewPage = ["首页", "查询", "权限管理"];
}
function User() {
this.name = "普通用户";
this.viewPage = ["首页", "查询"];
}
switch (role) {
case "admin":
return new Admin();
break;
case "user":
return new User();
break;
default:
throw new Error("参数错误, 可选参数: admin、user");
}
};
var admin = UserFactory("admin");
var user = UserFactory("user");
TIP
实现工厂方法
//安全模式创建的工厂方法函数
var UserFactory = function (role) {
if (this instanceof UserFactory) {
var s = new this[role]();
return s;
} else {
return new UserFactory(role);
}
};
//工厂方法函数的原型中设置所有对象的构造函数
UserFactory.prototype = {
Admin: function () {
this.name = "管理员";
this.viewPage = ["首页", "查询", "权限管理"];
},
User: function () {
this.name = "用户";
this.viewPage = ["首页", "查询"];
},
};
//调用
var admin = UserFactory("Admin");
var user = UserFactory("User");
大厂最新技术学习分享群
微信扫一扫进群,获取资料
X