工厂模式指的是,批量创建对象的时候可以避免使用new
+ 构造函数
的方式去暴露创建对象的行为,而是通过工厂模式将创建对象的行为隐藏到工厂函数内部,不仅可以批量的生产对象,而且还可以通过传入参数改变产出产品的形态。
画个工厂简单的流程图如下:
这里我们不需要关注车间一、二、三和四具体是咋操作的,只需要关系工厂入口我们输入的参数,和工厂出口产出的产品,举个例子如下:
// 定义可以生产服装的工厂
var factory = function (type, height) {
// 定义衬衫、短裤和皮夹克的车间
var workshop = {
1: function (height) {
var obj = new Object()
obj.name = '衬衫'
obj.height = height;
return obj;
},
2: function (height) {
var obj = new Object()
obj.name = '短裤'
obj.height = height;
return obj;
},
3: function (height) {
var obj = new Object()
obj.name = '皮夹克'
obj.height = height;
return obj;
},
4: function (height) {
var obj = new Object()
obj.name = '西装'
obj.height = height;
return obj;
},
}
// 不同的车间进行不同的服装生成
return workshop[type](height)
}
// 每个车间先生成一件衣服试试机器
var shirt1 = factory(1, '175cm')
var shorts1 = factory(2, '178cm')
var jacket1 = factory(3, '180cm')
var suit1 = factory(4, '185cm')
// 机器试着没问题,再批量生成一批衬衫
var shirt1 = factory(1, '172cm')
var shirt2 = factory(1, '173cm')
var shirt3 = factory(1, '174cm')
var shirt4 = factory(1, '175cm')
var shirt5 = factory(1, '176cm')
var shirt6 = factory(1, '177cm')
var shirt7 = factory(1, '178cm')
var shirt8 = factory(1, '179cm')
当前例子中,我们不必知道工厂内部各个车间的具体情况,只需要知道服装编号1
代表衬衫
、2
代表短裤
、3
代表皮夹克
、4
代表西装
,然后再告诉工厂穿衣者的身高,即可批量生成出一批衬衫。
当然我们也可以根据实际需求对工厂内部进行改造,改造成为我们需要的工厂。