js之简单工厂模式

来源:互联网 发布:阿里云最新六位推荐码 编辑:程序博客网 时间:2024/06/14 16:51

定义:工厂模式就是把成员变量的创建工作交给一个外部的对象去做(可以是类的实例也可以是一个命名空间);
例子:比如你去一家商店去买球;

var BallShop = function(){} //定义一个商店类BallShop.prototype ={    getBall:function(type){        var ball;        switch(type){            case A :                ball = new A();//A球            break;            case B :                ball = new B();//B球            break;            .            .            .            default :                ball = new N();//N球            break;              }        return ball;    } }

如果你要获得一个N球,那么你需要
var BallShop = new BallShop ();//先有一个商店;
var Ball = Ballshop.getBall(‘N’);//得到N类型的球;
但是如果我想要一个大的红色的N类型球;那么以上方法的拓展性就不好了;
这个时候我们就需要把getBall方法单独用一个类或者命名空间去代替;
方法一:命名空间

var BallFactory ={    createBall:function(type){        var ball;        switch(type){            case A :                ball = new A();//A球            break;            case B :                ball = new B();//B球            break;            .            .            .            default :                ball = new N();//N球            break;              }        return ball;    }};

所以现在获取一个球;

var BallShop = function(){} //定义一个商店类BallShop.prototype ={    getBall:function(type){        var ball = BallFactory.createBall(type);        return ball;    }}

BallFactory是脱离BallShop的单体对象;降低了耦合度,如需要添加新的类型和属性,只需要修改BallFactory对象即可;
方法二:类;

var BallFactory = function(){};BallFactory.prototype={    createBall:function(type){        var ball;        switch(type){            case A :                ball = new A();//A球            break;            case B :                ball = new B();//B球            break;            .            .            .            default :                ball = new N();//N球            break;              }        return ball;    }};

获取一个球;

var BallShop = function(){} //定义一个商店类BallShop.prototype ={    getBall:function(type){        var ball = BallFactory.createBall(type);        return ball;    }}
0 0
原创粉丝点击