设计模式知识连载(18)---单例模式:
来源:互联网 发布:java创建socket服务端 编辑:程序博客网 时间:2024/06/05 18:11
<body><h3>设计模式知识连载(18)---单例模式:</h3><p> 单例模式:又被称为单体模式,是只允许实例化一次的对象类。 常用一个对象来规划一个命名空间,井井有条的管理对象上的属性和方法</p><script type="text/javascript"> /** * 案例,方式一:初始 */ // // 滑动特效 // function g(id) { // return document.getElementById(id) ; // } ; // function css(id, key, value) { // g(id).style[key] = value ; // } ; // function attr(id, key, value) { // g(id)[key] = value ; // } ; // function html(id, value) { // g(id).innerHTML = value ; // } ; // function on(id, type, fn) { // g(id)['on' + type] = fn ; // } ; /** * 案例,方式二:单例模式 */ // 滑动特效 var GP = { g : function(id) { return document.getElementById(id) ; }, css : function(id, key, value) { // 简单样式的属性设置 // g(id).style[key] = value ; // 用了单例模式,这样写会报错 // GP.g(id).style[key] = value ; // 得加上命名空间 this.g(id).style[key] = value ; // 这里在同一个命名空间里,所以可以用this }, attr : function(id, key, value) { this.g(id)[key] = value ; }, html : function(id, value) { this.g(id).innerHTML = value ; }, on : function(id, type, fn) { this.g(id)['on' + type] = fn ; } } ; /**** * 用单例模式创建一个小型代码库 ****/ var Single = { // 公用模块 Util : { util_method1 : function() {}, util_method2 : function() {} // ... }, // 工具模块 Tool : { tool_method1 : function() {}, tool_method2 : function() {} // ... }, // ajax模块 Ajax : { get : function() {}, post : function() {} // ... }, // 其他模块 Other : { } } ; // 使用模块 Single.Util.util_method2() ; Single.Tool.tool_method1() ; Single.Ajax.get() ; /**** * 管理静态变量 ****/ var Conf =(function() { // 私有变量 var conf = { MIN_NUM : 1, MAX_NUM :100, COUNT : 300 } ; // 返回取值器对象 return { // 取值器方法 get : function(name) { return conf[name] ? conf[name] : null ; } } })() ; // 测试用例: var count = Conf.get('COUNT') ; console.log('count:', count) ; // 300 /**** * 惰性单例(惰性创建) * 有些时候对于单例对象需要延迟创建 ****/ // 惰性载入单例 var LazySingle = (function() { // 单例实例引用 var _instance = null ; // 单例 function Single() { // 这里定义私有属性和方法 return { publicProperty : '1.0', publicMethod : function() {} } } ; // 获取单例对象接口 return function() { // 如果为创建单例将创建单例 if(!_instance) { _instance = Single() ; } ; // 返回单例 return _instance ; } })() ; // 测试用例: var publicProperty = LazySingle().publicProperty ; console.log('publicProperty:', publicProperty) ;</script> </body>
阅读全文
0 0
- 设计模式知识连载(18)---单例模式:
- 设计模式知识连载(13)---简单工厂模式:
- 设计模式知识连载(14)---工厂方法模式:
- 设计模式知识连载(15)---抽象工厂模式:
- 设计模式知识连载(16)---建造者模式:
- 设计模式知识连载(17)---原型模式:
- 设计模式知识连载(19)---外观模式:
- 设计模式知识连载(20)---适配器模式:
- 设计模式知识连载(21)---代理模式:
- 设计模式知识连载(22)---装饰者模式:
- 设计模式知识连载(23)---桥接模式:
- 设计模式知识连载(24)---组合模式:
- 设计模式知识连载(25)---享元模式:
- 设计模式知识连载(26)---模板方法模式:
- 设计模式知识连载(27)---观察者模式:
- 设计模式知识连载(28)---状态模式:
- 设计模式知识连载(29)---策略模式:
- Java设计模式连载_1_单例模式(Singleton)
- 【住建部BIM数据库】2017年BIM及智慧管理技术应用交流会在江苏召开
- Maven生成可以直接运行的jar包的多种方式
- static的作用以及实验
- 为什么Relu会导致死亡节点
- EhCache注解
- 设计模式知识连载(18)---单例模式:
- ubuntu14启用root登录
- Docker Compose
- Python中os和shutil模块实用方法集锦
- 测试设计-基于规格说明
- 108. Convert Sorted Array to Binary Search Tree
- Mariadb Cluster+Haproxy+keepalived 集群的详细安装与配置
- 技术分享连载(八十七)
- [LeetCode] 310. Minimum Height Trees