当前位置: 首页 > 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.pierceye.com/news/20375/

相关文章:

  • 做网站需要哪些条件企业系统定制开发
  • 长沙多迪php网站开发培训学校无限免费视频直播
  • 做电商网站用什么语言做查询快递单号的网站多少钱
  • 网站建设中可能升级wordpress不用公众号
  • 网站分页样式wordpress 静态化 插件
  • 企业管理类的网站网站模板文件在哪里下载
  • 网站建设昆山花桥大学生网站策划书说明书
  • 学生免费建设网站集团公司网站建设品牌
  • 音乐网站怎么做精准关键词网站中主色调
  • 自适应 网站北京移动端网站开发
  • 响应式网站模板免费深圳市住房和建设局官网查询
  • 北京品牌网站建设公司排名django 网站开发
  • 注册top域名做公司网站大数据营销经典案例
  • 网站建设 广告施工企业
  • 西安博威建设工程有限公司招聘网站洛阳孟津网站建设
  • 做移门图的 网站有哪些WordPress SEO中文插件
  • 建设部职业资格注册中心网站怎么自己公司名下的网站
  • 免费flash网站模板免费网站推广软件下载大全
  • 河南企业站seo网站新闻源码
  • 四川省建设工程质量安全监督总站网站论坛推广方案
  • 嵩明县住房和城乡建设局网站微信公众号小程序登录入口
  • 广西做网站的公司有哪些宁波妇科哪个医生好
  • 女生做网站运营郑州网站建设企起
  • 手机网站抢拍是怎么做的企业qq官网首页
  • 网站模板购买网站开发网页跳转到新的页面
  • 银行门户网站建设ppt成都微商城开发公司
  • 外包网络推广公司推广网站网站建设需要哪些素材
  • 长沙做网站备案wordpress怎么放视频教程
  • 深圳网站建设大公司手机网站在线生成
  • 相册网站开发学做网站根学ps有前途吗