工厂模式,我们造一个精简版服装生产厂模型

1,730 阅读2分钟

工厂模式指的是,批量创建对象的时候可以避免使用new + 构造函数的方式去暴露创建对象的行为,而是通过工厂模式将创建对象的行为隐藏到工厂函数内部,不仅可以批量的生产对象,而且还可以通过传入参数改变产出产品的形态。

画个工厂简单的流程图如下:

image.png

这里我们不需要关注车间一、二、三和四具体是咋操作的,只需要关系工厂入口我们输入的参数,和工厂出口产出的产品,举个例子如下:

// 定义可以生产服装的工厂
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代表西装,然后再告诉工厂穿衣者的身高,即可批量生成出一批衬衫。

当然我们也可以根据实际需求对工厂内部进行改造,改造成为我们需要的工厂。