增强的模块模式

增强的模块模式通过在返回对象前进行增强,适用于单例需要特定类型实例且需扩展属性和方法的情况。例如,创建一个必须是BaseComponent实例的application对象,首先初始化私有变量,然后创建并增强app对象,添加公有方法以访问私有变量,最后返回app作为全局的application单例。
摘要由CSDN通过智能技术生成

有人进一步改进了模块模式,即在返回对象之前加入对其增强的代码。这种增强的模块模式适合那些单例必须是某种类型的实例,同时还必须添加某些属性和方法对其加以增强的情况。来看下面的例子:

var singleton=function(){

  //私有变量和私有函数

  var privateVariable=10;

   function privateFunction(){

       return false;

    }

    //创建对象

    var object=new CustomType();

    //添加特权(公有)属性和方法

    object.publicProperty=true;

     object.publicMethod=function(){

         privateVariable++;

         return privateFunction();

    };

       //返回这个对象

         return object;

}();

如果前面演示模块模式的例子中的application对象必须是BaseComponet的实例,那么就可以使用一下代码。

var application=function(){

     //私有变量和函数

     var component=new Array();

     //初始化

     component.push(new BaseCOmponent());

      //创建application的一个局部变量

      var app=new BaseComponent();

      //公共接口

      app.getComponentCount=function(){

          return components.length;

     };

     app.registerComponent=function(component){

             if(typeof component=="object"){

                components.push(component);

       }

      };

       //返回这个对象

        return app;

}();

   在这个重写后的应用程序(application)单例中,首先也是像前面例子中一样定义了私有变量。主要的不同之处在于命名变量app的创建过程,因为它必须是BaseComponent的实例。这个实例实际上是application对象的局部变量版。此后,我们又为app对象添加了能够访问私有变量的公有方法。最后一步是返回app对象,结果仍然是将它赋值给全局变量application。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值