美文网首页
小白的JS之路--简单工厂模式

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

作者: 阿古瓜 | 来源:发表于2018-07-19 11:36 被阅读0次
    /* 登录警示类 */
        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设计模式》

    相关文章

      网友评论

          本文标题:小白的JS之路--简单工厂模式

          本文链接:https://www.haomeiwen.com/subject/ibazpftx.html