工厂模式的特点
工厂模式是什么呀?
工厂模式是什么呀?
2017-06-26
工厂模式主要是为了创建对象实例或者类簇(抽象工厂), 关心的是最终产出(创建)的对象, 而不关心创建的过程.
在出现多个类的时候, 每次创建需要找到对应的类往往比较麻烦, 这时候通常使用一个函数进行封装来创建所需要的对象,
这样就无需关注创建这些对象到底依赖哪些基类了, 只要知道有这个函数就可以了, 通常这个函数被称为工厂函数,
这种模式叫简单工厂模式
案例
假设一体育商品店卖器材, 里面有很多体育商品, 及其相关介绍. 当你来到体育用品店买一个篮球及相关介绍时,你只需要问售货员, 她会帮你找到你所需要的东西.
实现
// 篮球基类
var Basketball = function() {
this.intro = '篮球盛行于美国';
}
Basketball.prototype = function() {
getMember: function() {
console.log('每个队伍需要5名队员');
},
getBallSize: function() {
console.log('篮球很大');
}
}
// 足球基类
var Football = function() {
this.intro = '足球在世界范围内盛行';
}
Football.prototype = function() {
getMember: function() {
console.log('每个队伍需要11名队员');
}, getBallSize: function() {
console.log('足球很大');
}
}// 网球基类
var Tennis = function() {
this.intro = '每年有很多网球系列赛';
}
Tennis.prototype = function() {
getMember: function() {
console.log('每个队伍需要1名队员');
}, getBallSize: function() {
console.log('网球很小');
}
}// 运动工厂(这边相当于咨询体育器材店的售货员, 告诉她你想要买什么体育用品)var SportFactory = function(name) {
switch(name) {
case 'basketball':
return new Basketball();
case 'football':
return new Football();
case 'tennis':
return new Tennis();
}
}
var ball = new SportFactory('tennis');
console.log(ball.intro) // 每年有很多网球系列赛
console.log(ball.getMember()); // 每个队伍需要1名队员
举报