关于《Javascript设计模式》(张容铭)中抽象工厂模式的一个问题
《Javascript设计模式》(张容铭)书中5.2章里面关于抽象工厂方法的代码:
var VehicleFactory = function (subType,superType) {
//判断抽象工厂是否有该抽象类
if(typeof VehicleFactory[superType] === 'function'){
//缓存类
function F() {};
//继承父类属性和方法
F.prototype = new VehicleFactory[superType]();
//将子类constructor指向子类
subType.constructor = subType;
//子类原型继承"父类”
subType.prototype = new F();
}else {
//不存在该抽象类抛出错误
throw new Error('未创建该抽象类');
}
}
我有一个问题就是缓存类F作用是什么呢?
如果我这样写(不创建缓存类)又有什么不同呢:
var VehicleFactory = function (subType,superType) {
//判断抽象工厂是否有该抽象类
if(typeof VehicleFactory[superType] === 'function'){
//子类原型继承"父类”
subType.prototype = new VehicleFactory[superType]();
//将子类constructor指向子类
subType.constructor = subType;
}else {
//不存在该抽象类抛出错误
throw new Error('未创建该抽象类');
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了保证你后面继续操作subType的话,不会污染你通过工厂得到的类。 不只是类,工厂模式在处理Object也应该先私有化