当前位置: 首页 > news >正文

做招聘的网站建设部资质网站

做招聘的网站,建设部资质网站,wordpress数据端口,金融行业网站建设公司文章目录 1、实现单例模式2、透明的单例模式3、用代理实现单例模式4、JavaScript 中的单例模式5、惰性单例6、通用的惰性单例7、小结 定义#xff1a; 保证一个类仅有一个实例#xff0c;并提供一个访问它的全局访问点 单例模式是一种常用的模式#xff0c;有一些对象我们往… 文章目录 1、实现单例模式2、透明的单例模式3、用代理实现单例模式4、JavaScript 中的单例模式5、惰性单例6、通用的惰性单例7、小结 定义 保证一个类仅有一个实例并提供一个访问它的全局访问点 单例模式是一种常用的模式有一些对象我们往往只需要一个比如线程池、全局缓存、浏 览器中的 window 对象等 1、实现单例模式 是用一个变量来标志当前是否已经为某个类创建过对象如果是则在下一次获取该类的实例时直接返回之前创建的对象。 代码如下 var Singleton function (name) {this.name name;this.instance null; }; Singleton.getInstance function (name) {if (!this.instance) {this.instance new Singleton(name);}return this.instance; };var a Singleton.getInstance(a); var b Singleton.getInstance(b); console.log(a b); // true或者利用闭包 var Singleton function (name) {this.name name;this.instance null; }; Singleton.getInstance (function (name) {var instance null;return function (name) {if (!instance) {instance new Singleton(name);}return instance;}; })();var a Singleton.getInstance(a); var b Singleton.getInstance(b); console.log(a b); // true问题 就是增加了这个类的“不透明性”Singleton 类的使用者必须知道这是一个单例类 2、透明的单例模式 实现一个“透明”的单例类用户从这个类中创建对象的时候可以像使用其他任何普通类一样。 在下面的例子中我们将使用 CreateDiv 单例类它的作用是负责在页面中创建唯一的 div 节点代码如下 var CreateDiv (function () {var instance null;var CreateDiv function (html) {if (instance) {return instance;}this.html html;this.init();return (instance this);};CreateDiv.prototype.init function () {var div document.createElement(div);div.innerHTML this.html;document.body.appendChild(div);};return CreateDiv; })();var a new CreateDiv(a); var b new CreateDiv(b);console.log(a b);问题 问题假设我们某天需要利用这个类在页面中创建千千万万的 div即要让这个类从单例类变成一个普通的可产生多个实例的类那我们必须得改写 CreateDiv 构造函数把控制创建唯一对象的那一段去掉这种修改会给我们带来不必要的烦恼 解决 使用代理模式 3、用代理实现单例模式 在 CreateDiv 构造函数中把负责管理单例的代码移除出去使它成为一个普通的创建 div 的类 var CreateDiv function (html) {this.html html;this.init(); }; CreateDiv.prototype.init function () {var div document.createElement(div);div.innerHTML this.html;document.body.appendChild(div); };// 引入代理类 proxySingletonCreateDiv var ProxySingletonCreateDiv (function () {var instance;return function (html) {if (!instance) {instance new CreateDiv(html);}return instance;}; })();var a new ProxySingletonCreateDiv(a); var b new ProxySingletonCreateDiv(b);console.log(a b);跟之前不同的是现在我们把负责管理单例的逻辑移到了代理类 proxySingletonCreateDiv 中。这样一来CreateDiv 就变成了一个普通的类它跟 proxySingletonCreateDiv 组合起来可以达到单例模式的效果 4、JavaScript 中的单例模式 在 JavaScript 开发中我们经常会把全局变量当成单例来使用。 例如 var a {};问题 全局变量存在很多问题它很容易造成命名空间污染 解决 1、使用命名空间 var namespace1 { a: function(){ alert (1); }, b: function(){ alert (2); } };2、使用闭包封装私有变量 var user (function(){ var __name sven, __age 29; return { getUserInfo: function(){ return __name - __age; } } })();5、惰性单例 惰性单例指的是在需要的时候才创建对象实例 例子 var createLoginLayer (function () {var div;return function () {if (!div) {div document.createElement(div);div.innerHTML 我是浮窗;document.body.appendChild(div);}return div;} })()// 用户点击按钮的时候才开始创建该浮窗 document.getElementById(loginBtn).onclick function () {var loginLayer createLoginLayer(); };问题违反单一职责原则创建对象和管理单例的逻辑都放在 createLoginLayer对象内部如果我们下次需要创建页面中唯一的 iframe或者 script 标签用来跨域请求数据就 必须得如法炮制把 createLoginLayer 函数几乎照抄一遍 解决第6点 6、通用的惰性单例 将单例的逻辑从原来的代码中抽离出来这些逻辑被封装在 getSingle函数内部创建对象的方法 fn 被当成参数动态传入 getSingle 函数 var getSingle function (fn) {var result;return function () {return result || (result fn.apply(this, arguments));} }使用示例 var createLoginLayer function () {var div document.createElement(div);div.innerHTML 我是浮窗;document.body.appendChild(div);return div; } var createSingleLoginLayer getSingle(createLoginLayer);document.getElementById(loginBtn).onclick function () {var loginLayer createSingleLoginLayer(); };也可以用在只执行一次的函数 比如给一个div绑定事件 var bindEvent getSingle(function () {console.log(给div绑定事件~);return true; });bindEvent(); bindEvent(); bindEvent();7、小结 单例模式是一种简单但非常实用的模式特别是惰性单例技术在合适的时候才创建对象并且只创建唯一的一个。更奇妙的是创建对象和管理单例的职责被分布在两个不同的方法中这两个方法组合起来才具有单例模式的威力。
http://www.zqtcl.cn/news/20375/

相关文章:

  • 做网站好app网站建设制作
  • 石家庄有那些网站开发公司提升网站开发效率
  • 用什么软件做网站最简单wordpress淘宝ued
  • 一个网站有多大学生模拟网站开发
  • 快速建站服务器网站数据库太大搬家还原500错误
  • 新余集团网站建设asp.net mvc 做网站
  • 成都市建设厅网站查询大学网站模板html
  • 深圳网站优化排名公司wordpress 登陆 插件
  • linux网站服务器配置网络推广怎么优化
  • wordpress 子域名建站新手建站论坛
  • 湖北外贸网站建设php做外贸网站好吗
  • 地方门户网站建设多少钱中国市场营销培训网
  • 外贸网站seo推广方案域名绑定网站
  • 做视频特技的网站wordpress daxue
  • 建设网站服务器的方式有自营方式空港经济区内的建设工程网站
  • 吉林省高等级公路建设局 网站wordpress推介
  • 免费网页推广企业网站关联优化
  • 分类信息网站如何做优化网站站内关键词优化
  • c++网站开发商城网站制作
  • 关于建设工程招标类的公共网站当当网站建设与易趣网站对比
  • 诸暨网站制作公司 网页做PS的赚钱的网站
  • 网站规划书包含哪些内容网站开发招聘要求
  • 部队网站建设男女做暧网站
  • 网站建设实战案例全国送花网站
  • 呼伦贝尔哪里做网站公司网站一年费用
  • 站长工具里查看的网站描述和关键词都不显示做医疗的网站
  • 怎么免费建设个人博客网站上海网站建站
  • 汝州建站公司一个网站怎么做app
  • 网站开发技术代码软件班级网站建设
  • 如何做网站国际化好网站建设公司哪里好