Java入门(3)

52 阅读1分钟

增强的模块模式

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

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。

花了2万多买的Java最新教程全套,现在分享给大家,入门到精通(JAVA零基础后端开发工程师)_哔哩哔哩_bilibili