javascript设计模式--抽象工厂模式

来源:互联网 发布:php 查找字符串位置 编辑:程序博客网 时间:2024/05/22 10:22

抽象工厂模式(abstract Fctory):通过对类的工厂抽象使其业务用于对产品类鏃的创建,而不负责创建某一类产品的实例.

    //汽车抽象类,当使用其实例对象的方法时会抛出错误    var Car = function(){};    Car.protorype = {        getPrice : function(){            return new Error('抽象方法不能调用!');        },        getSpeed : function(){            return new Error('抽象方法不能调用!');        }    }

我们不能使用它来创建一个真实的对象,一般用来作为父类来创建一些子类

    //抽象工厂方法    var AbstractFactory = function(subType,superType){        //判断抽象工厂种是否有这个抽象类\        if(typeof(AbstractFactory[superType])=='function'){            //缓存类            function F(){};            //继承父类属性和方法            F.protorype = new AbstractFactory[superType]();            //将子类constructor指向子类            subType.constructor = subType;            //子类原型继承"父类"            subType.prototype = new F();        }else{            //不存在该抽象类抛出错误            throw new Error('未创建该抽象类');        }    }    //小汽车抽象类    AbstractFactory.Car = function(){        this.type = 'Car';    }    AbstractFactory.Car.prototype = {        getPrice : 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;    }
0 0
原创粉丝点击