目录1. Revealing Module 揭示模式2. Singleton 单例模式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>
优点:
单例模式,能够限制类的实例化次数只能为一次。单例模式,在该实例不存在的情况下, 可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用;
示例:
<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 揭示模式单例模式的详细内容,更多关于js 揭示模式单例模式的资料请关注编程网其它相关文章!
--结束END--
本文标题: 解析Javascript设计模式Revealing Module 揭示模式单例模式
本文链接: https://lsjlt.com/news/165976.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0