- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单例_单体模式(Singleton)
首先,单例模式是对象的创建模式之一,此外还包括工厂模式。单例模式的三个特点:
1,该类只有一个实例
2,该类自行创建该实例 (在该类内部创建自身的实例对象)
3,向整个系统公开这个实例接口
Java中大概是这个样子
class Singleton {
//私有,静态的类自身实例
private static Singleton instance new Singleton ();
//私有的构造子 (构造器,构造函数,构造方法)
private Singleton () {}
//公开,静态的工厂方法
public static Singleton getInstance() {
return instance;
}
}
使用时
Singleton obj Singleton.getInstance();
这个单例类在 自身被加载时instance会被实例化,即便加载器是静态的。因此,对于资源密集,配置开销
较大的单体更合理的做法是将实例化 (new)推迟到使用它的时候。即惰性加载 (Lazy loading),它常用于那
些必须加载大量数据的单体。修改下
class LazySingleton {
//初始为null,暂不实例化
private static LazySingleton instance null;
//私有的构造子 (构造器,构造函数,构造方法)
private LazySingleton () {}
//公开,静态的工厂方法,需要使用时才去创建该单体
public static LazySingleton getInstance() {
if( instance null ) {
instance new LazySingleton ();
}
return instance;
}
}
使用方式同上。
单例模式是Javascript最基本,最有用的模式之一。它提供了一种将代码组织为一个逻辑单元的手段,这
个逻辑单元中的代码通过单一的变量进行访问。
单体在Javascipt中有许多用处,可以用来划分命名空间,以减少全局变量的泛滥。还可以用在分支技术中
用来处理各浏览器的差异。
Javascript中单例模式的实现方式有多种,每一种都有自身的优点或缺点。
1,对象直接量实现最基本,最简单的单体
var Singleton {
attr1 : 1,
attr2 : hello,
method1 : function () {alert(this.attr2);},
method2 : function (arg) {}
}
这种方式中,对象所有成员都通过Singleton加点号访问。所有成员是公开的,没有私有的。在执行到变量
Singleton时,会加载 (实例化)自身,即非惰性加载。
此外method1用this访问单体的其它成员会存在一些风险,因为method1的上下文不是总是指向Singleton对
象。
比如当把method1作为事件监听器时,this可能指向的是dom元素,这时可能会提示undefined。
2,闭包实现私有成员的单体
var Singleton function () {
var attr 1, fn function () {};
return {
method : function () { fn (); },
getAttr : function () { return attr ; }
};
}();
这种方式中var定义私有的成员属性attr,方法fn,然后返回一个公开的接口method和getAttr。今后修改
实现时,接口方法method和getAttr不变,只需修改私有的attr和fn的具体实现。使用如下
Singleton.method();
Singleton.getAttr ();
3,闭包实现私有成员的惰性实例化单体
var LazySingleton function () {
var attr 1, fn function () {};
var obj {
method : function () { fn (); },
getAttr : function () { return attr ; }
};
fu
您可能关注的文档
- 农村的1种猪草,白色汁液是天然中药水,不只能治瘊子、带状疱疹.pdf
- 冲击破碎技术处理旧水泥砼路面的工程实践.pdf
- 准考证样本及准考证号编制说明.doc
- 几何代数在物理中的应用 课程1.pdf
- 冷却系大循环动画.ppt
- 几何代数在物理中的应用 课程11.pdf
- 几何代数在物理中的应用 课程15.pdf
- 几类变系数微分方程化为常系数方程的变量代换法.pdf
- 几何与代数_4.5.ppt
- 凸函数的性质及其在不等式证明中的应用.pdf
- 2026年及未来5年家用小型中央空调项目市场数据调查、监测研究报告.docx
- 教育数字化优秀案例:多师同行 智慧旅行——国家中小学智慧教育平台 多师课堂教学模式创新实践.docx
- 2026年及未来5年水族喷泉项目市场数据调查、监测研究报告.docx
- 2026年及未来5年汽车计量器内部零部件项目市场数据调查、监测研究报告.docx
- 中级会计职称模拟试卷合集.docx
- 教育数字化优秀案例:从“一纸定音”到“数智赋能”: 语文作业变革实践.docx
- 2026年及未来5年M字型组合式高效空气过滤器项目市场数据调查、监测研究报告.docx
- 教育数字化优秀案例:e路成长:德育动态画像云端构建行动.docx
- 教育数字化优秀案例:AI智能解码初中生常见运动损伤的预防与急救密钥.docx
- 教育数字化优秀案例:AI牵线· 文化传鸢——小学英语数字化教学实践探索.docx
最近下载
- 人教版高中数学精讲精练必修二101 随机事件与概率(精练)(原卷版).pdf VIP
- SYT6391-2014 SEG D Rev3.0地震数据记录格式.pdf VIP
- 2025至2030中国硬盘行业发展分析及发展趋势分析与未来投资战略咨询研究报告.docx
- 石楼南煤层气勘查实施方案.docx VIP
- 人教版高中数学精讲精练必修一1.2 集合间的关系(精讲)(解析版).pdf VIP
- IPV4和IPV6地址.ppt VIP
- 秀出你风采——ppt创意动画知到智慧树期末考试答案题库2024年秋黑龙江幼儿师范高等专科学校.docx VIP
- 我国辽中南工业区等.ppt VIP
- 重大事故隐患安全管理制度.docx VIP
- 电子海图课件--TOKYO-KEIKI8600.ppt VIP
原创力文档


文档评论(0)