小白的JS之路--简单工厂模式

/* 登录警示类 */
    var LoginAlert = function ( text ) {
        this.content = text;
    }
    LoginAlert.prototype.show = function () {
        // 显示警示框
    }
    
    /* 登录确认类 */
    var LoginConfirm = function ( text ) {
        this.content = text;
    }
    LoginConfirm.prototype.show = function () {
        // 显示确认框
    }
    
    /* 登录提示框 */
    var LoginPrompt = function ( text ) {
        this.content = text;
    }
    LoginPrompt.prototype.show = function () {
        // 显示提示框
    }
    

    /* 第一种,简单工厂模式:如果类太多,那就提供一个工厂函数 */
    var PopFactory = function ( name ) {
        switch ( name ) {
            case 'alert':
                return new LoginAlert();
            case 'confirm':
                return new LoginConfirm();
            case 'prompt':
                return new LoginPrompt();
        }
    }
    

    //##################################################
    /* 第二种,简单工厂模式 */
    var createPop = function ( type, text ) {
        // 创建一个对象,并对该对象做出扩展
        var o = new Object;
        o.content = text;
        o.show = function () {
            //  显示相同部分
            
            switch ( type ) {
                case 'alert':
                    // 警示框差异部分
                    break;
                case 'confirm':
                    // 确认框差异部分
                    break;
                case 'prompt':
                    // 提示框差异部分
                    break;
            }
        }       
        return o;
    }
    
    var userNameAlert = createPop( 'alert', '用户名只能是字母和数字' )

队长点评:
第一种通过类实例化对象创建的,第二种通过创建一个新对象然后包装增强其属性和功能来实现的。他们之间的差异性也造成前面通过类创建的对象,如果这些类继承同一个父类,那么父类的原型上的方法也可以共用,而后面寄生的方式创建的对象都是一个新的个体,所以他们的方法就不能共用了.具体的使用中选择哪种看实际的需求。

本文实例来源于张容铭大神写的《JavaScript设计模式》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。