javascript设计模式之简单工厂模式

78 阅读2分钟

工厂模式含义 :

工厂模式又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。

使用类创建一个简单工厂模式

篮球基类

var Basketball = function () {
    this.intro = '篮球盛行于美国'
}
Basketball.prototype = {
    getMember : function() {
        console.log('每个队伍需要5明队员')
    },
    getBallSize: function(){
        console.log('篮球很大')
    }
}

足球基类

var Football = function () {
    this.intro = '篮球盛行于美国'
}

Football.prototype = {
    getMember : function() {
        console.log('每个队伍需要11明队员')
    },
    getBallSize: function(){
        console.log('足球很大')
    }
}

网球基类

var tennis = function () {
    this.intro = '篮球盛行于美国'
}

tennis.prototype = {
    getMember : function() {
        console.log('每个队伍需要11明队员')
    },
    getBallSize: function(){
        console.log('网球很大')
    }
}

以上都是基类

创建一个运动工厂

var SportsFactory = function(name){
    switch(name) {
        case 'NBA':
            return new Basketball()
        case 'wordCup':
            return new Football()
        case 'FrenchOpen':
            return new tennis()
    }
}

这种创建模式是通过实例化类来创建的 用法


var footnall = SportsFactory('wordCup')
console.log(footnall);
console.log(footnall.intro);
footnall.getMember()

使用对象替代类创建简单的工厂模式

/**
 *  使用对象替代类创建简单的工厂模式
 * @param {*} type 
 * @param {*} text 
 * @returns 
 */

function createPop(type,text) {
    // 创建一个对象,并对对象拓展属性和方法
    var o = new Object()
    o.content = text;
    o.show = function() {
        // 显示方法
    }
    if(type === 'alert') {
        // 显示弹框差异部分业务
    }
    if(type === 'prompt') {
        // 提示框差异部分
    }
    if(type === 'confirm') {
        // 确认框差异部分
    }
    // 将对象返回
    return o
}

使用 创建 警示框

var userNameAlert = createPop('alert','用户名只能是26个字母和数字')

这种创建的工厂是通过创建一个新对象然后包装增强其属性和功能来实现的,

总结:

团队项目开发不同于个人开发,其对全局变量的限制很大,所以我们要尽量少的茶u你更加爱你全局变量。

对于同一类对象在不同需求中的重复性使用,很多时候不需要重复创建,代码复用是面向对象编程的一条准则。

通过对简单工厂来创建一些对象,可以让这些对象公用一些资源而又私有一些资源。