设计模式 揭示模式怎么实现

湘潭网餐饮知识
582

湘潭网小编为大家带来以下内容:

这篇“Javascript设计模式Revealing Module揭示模式怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Javascript设计模式Revealing Module揭示模式怎么实现”文章吧。1. Revealing Module 揭示模式

该模式能够在私有范围内简单定义所有的函数和变量,并返回一个匿名对象, 它拥有指向私有函数的指针,该函数是他希望展示为公有的方法。

示例:

<script>var myRevealingModule = function () {    var privateVar = "Ren Cherry",            publicVar = "Hey there";    function privateFunction() {            console.log("Name:"+privateVar);    }    function publicSetName(strName) {            privateName = strName;    }    function publicGetName() {            privateFunction();    }    //将暴露的公有指针指向到私有函数和属性上    return {            setName: publicSetName,            greeting: publicvar,            getName: publicGetName    };}();myRevealingModule.setName("Paul Kinlan");</script>

优点:

该模式很容易之处哪些函数和变量可被公开访问,改善了可读性。

如果一个私有函数引用一个公有函数,在需要打补丁时,公有函数是不能被覆盖的。 因为私有函数将继续引用私有实现,该模式并不适用于公有成员,只使用函数。

2. Singleton 单例模式

单例模式,能够限制类的实例化次数只能为一次。单例模式,在该实例不存在的情况下, 可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用;

示例:

<script type="text/javascript">var mySingleton = (function () {        //实例保持了singleton 的一个引用        var instance;        function init() {                //singleton                //私有方法和变量                function privateMethod() {                        console.log("I am private");                }                var privateVariable = "I am also private";                var privateRandomNumber = Math.random();                return {                        //公有方法和变量                        publicMethod: function () {                                console.log("The public can see me!");                        },                        publicProperty: "I am also public",                        getRandomNumber: function() {                                return privateRandomNumber;                        }                };        };        return {                //获取singleton 的实例,如果存在就返回,不存在就创建新实例                getInstance: function() {                        if(!instance) {                                instance = init();                        }                        return instance;                }        };})();var singleA = mySingleton.getInstance();var singleB = mySingleton.getInstance();console.log(singleA.getRandomNumber()===singleB.getRandomNumber());//true</script>

在实践中,当在系统中确实需要一个对象来协调其他对象时,>Singleton模式很有用。

示例:

<script type="text/javascript">var SingletonTester = (function() {        //options: 包含singleton所需配置信息的对象        //var options = {name:"test",pointX:5};        function Singleton(options) {                //如果未提供options,则设置为空对象                options = options || {};                //为singleton设置一些属性                this.name = "SingletonTester";                this.pointX = options.pointX || 6;                this.pointY = options.pointY || 10;        }        //实例持有者        var instance;        //静态变量和方法的模拟        var _static = {                name: "SingletonTester",                //获取实例的方法,返回singleton对象的singleton实例                getInstance: function(options) {                        if(instance === undefined) {                                instance = new Singleton(options);                        }                        return instance;                };                return _static;        }})();var singletonTest = SingletonTester.getInstance({        pointX: 5});console.log(singletonTest.pointX);//5</script>

以上就是关于“Javascript设计模式Revealing Module揭示模式怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注花开半夏行业资讯频道。

君子莲(www.junzilian.com)湖南省长沙、株洲、湘潭城市宣传信息网,提供房产,人才招聘,家居装饰,教育,论坛,旅游,特产,美食,天气,娱乐,企业等资讯。



最新餐饮知识

热门推荐

为你推荐