文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络网络编程Scriptjavascript设计模式交流(一) :Singleton Pattern
精品推荐
特别推荐
·主页javascript特效19则
·各种网页媒体播放器代码及详解
·用户体验:JS实现仿新浪信息提示效果
·网页特效:图片随机显示实例详解
·JavaScript入门学习书籍的阶段选择
·Javascript代码轻松隐藏网页源文件
·网页制作:JavaScript仿Windows关机效果
·网页制作Javascript经典小技巧总结
热点TOP10
·javascript实现语法分色编辑器
·总结性知识:107个常用Javascript语句
·Javascript模拟的DOS窗口代码实例
·JavaScript应用实例:网页折叠菜单
·撕页广告代码及简介
·用javascript作消息提示框(类似于QQ用户上线的消息提示)
·使用Javascript创建XML文件
·用vbscript实现在文本文件中搜索两个项

javascript设计模式交流(一) :Singleton Pattern

日期:2007年7月6日 作者: 查看:[大字体 中字体 小字体]

 

即使是简单的脚本语言,应用良好的模式可以得到非常“优美”的代码和较高的效率。
尤其是对于交互要求较高的B/S系统,非常有必要用设计模式来优化代码。

单件模式(Singleton Pattern)是一种非常基本和重要的创建型模式。
“单件”的职责是保证一个类有且只有一个实例,并提供一个访问它的全局访问点。
在程序设计过程中,有很多情况下需要确保一个类只能有一个实例。

传统的编程语言中为了使一个类只有一个实例,最容易的方法是在类中嵌入静态变量,并在第一个实例中设置该变量,而且每次进入构造函数都要做检查,不管类有多少个实例,静态变量只能有一个实例。为了防止类被多次初始化,要把构造函数声明为私有的,这样只能在静态方法里创建一个实例。

在javascript中,虽然我们仍然可以指定静态方法来构造对象,但由于我们不能利用构造函数的“私有”来禁止多个实例的生成,因此要完全实现Singleton并没有想象中那么简单。

请看下面的例子:

[code]
<script>
function SingletonObject()
{
 SingletonObject.prototype.methodA = function()
 {
  alert('methodA');
 }
 SingletonObject.prototype.methodB = function()
 {
  alert('methodB');
 }
 SingletonObject.instance = this;
}
SingletonFactory = new Object();
SingletonFactory.getInstance = function()
{
 if(SingletonObject.instance == null)
  return new SingletonObject();
 else
  return SingletonObject.instance;
}

var instA = SingletonFactory.getInstance();
var instB = SingletonFactory.getInstance();
instA.methodA();
instB.methodA();
alert(instA == instB); //成功
var instC = new SingletonObject();
instC.methodA();
alert(instA == instC); //失败
</script>
[/code]
上面的例子试图通过传统的方式来实现Singleton模式,而通过调用SingletonTest.getInstance()来获得对象确实可以保证“唯一实例”,然而,这个例子的失败之处在于它并没有有效地禁止Singleton对象的构造,因此如果我们在程序代码中人工加入new SingletonObject(),仍然可以获得到多个对象而导致模式失败。

一个改进的替代方案如下:
[code]
<script>
function SingletonObject()
{
 if(SingletonObject.instance != null)
 {
  alert("不能创建多个singleton实例!");
  throw new Error();
 }
 SingletonObject.prototype.methodA = function()
 {
  alert('methodA');
 }
 SingletonObject.prototype.methodB = function()
 {
  alert('methodB');

[1] [2] [3] 下一页 



上一篇:用JavaScript检查文件大小

下一篇:鼠标放上去自动点击代码,只自动点一次

相关文章:
·VB+Access设计图书管理系统
·华北水利水电学院新校区校园网规划与设计
·javascript实现语法分色编辑器
·设计模式:设计自己的MVC框架
·ASP.NET数据库操作层设计
·WCDMA与GSM共享室内分布系统设计
·网站设计管理与维护的十二项要点
相关软件:
·远潮自我形象设计系统
·C语言程序设计
·我家我设计 6.4增强版
·系列语言网页设计
·Windows环境下32位汇编语言程序设计
·Photoshop CS中文版平面设计师标准案例教程
·C语言程序设计视频教程 CSF 教材:谭浩强《c程序设计》

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot