正在回答
2回答
同学你好,可以参考以下思路来理解:
简单工厂模式是由一个工厂对象来决定创建一类产品的实例,将所有产品类都封装在一个工厂类中,然后根据不同的传入参数得到对应的产品实例,这一系列操作都是在一个工厂类中完成的(包括创建对象的步骤)。
// 创建工厂类
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');
在简单工厂模式中,当需求发生变化时,不仅仅需要添加类,还要修改工厂函数,而工厂方法模式则使用继承,把对象的创建委托给子类,子类实现工厂来创建对象,也就是将创建对象的工作推迟到子类当中。这样的好处是在添加类时,只需要在工厂类的原型里添加即可,而不需要修改工厂函数。
//安全模式创建的工厂方法函数,用于创建实例对象 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');
祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星