有咩有看过张容铭的javascript设计模式这一本书的?
其中见到抽象工厂模式
抽象工厂模式(abstract Fctory):通过对类的工厂抽象使其业务用于对产品类鏃的创建,而不负责创建某一类产品的实例.
//汽车抽象类,当使用其实例对象的方法时会抛出错误 var Car = function(){}; Car.protorype = { getPrice : function(){ return new Error('抽象方法不能调用!'); }, getSpeed : function(){ return new Error('抽象方法不能调用!'); } }
我们不能使用它来创建一个真实的对象,一般用来作为父类来创建一些子类
抽象工厂其实是一个实现子类继承父类的方法,在这个方法种我我们需要传入子类以及要继承父类的名称.
过渡类的原型继承,不是继承父类的原型,而是通过new 复制一个父类的实例,过渡类不仅仅继承了父类的原型方法,还继承了父类的对象属性.
使用方法
//宝马汽车类 var BMW = function(price,speed){ this.price = price; this.speed = speed; } //抽象工厂实现对Car抽象类的继承 AbstractFactory(BMW,'Car'); BMW.prototype.getPrice = function(){ return this.price; }
我的问题是:这一句
//将子类constructor指向子类 subType.constructor = subType;
意义何在?
还有,为什么要弄个F函数来缓存?直接
subType.prototype = new AbstractFactory[superType]();
不是更省事吗?很疑惑
慕瓜9014302
德玛西亚99
相关分类