Java入门(3)

206 篇文章 0 订阅
172 篇文章 0 订阅

增强的模块模式

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

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对象必须是BaseComponent的实例,那么就可以使用以下代码。

var application = function(){

//私有变量和函数

var components = new Array();

//初始化

components.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;

}();

ModuleAugmentationPatternExample01.htm

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

https://www.bilibili.com/video/BV18W4y157K3/?spm_id_from=333.999.0.0&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值