日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单例模式-3.透明的单例模式

發(fā)布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单例模式-3.透明的单例模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8" /><title>透明的單利模式</title></head><body></body><script type="text/javascript">//用戶從這個類中創(chuàng)建對象的時候,可以像使用其他任何普通類一樣var CreateDiv = (function() {var instance;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('seven1');var b = new CreateDiv('seven2');console.log(a === b); //true/*為了把 instance 封裝起來,我們使用了自執(zhí)行的匿名函數(shù)和閉包,并且讓這個匿名函數(shù)返回真正的 Singleton 構造方法,這增加了一些程序的復雜度,閱讀起來也不是很舒服CreateDiv 的構造函數(shù)實際上負責了兩件事情。第一是創(chuàng)建對象和執(zhí)行初始化 init 方法,第二是保證只有一個對象。雖然我們目前還沒有接觸過“單一職責原則”的概念,但可以明確的是,這是一種不好的做法,至少這個構造函數(shù)看起來很奇怪假設我們某天需要利用這個類,在頁面中創(chuàng)建千千萬萬的 div,即要讓這個類從單例類變成一個普通的可產(chǎn)生多個實例的類,那我們必須得改寫 CreateDiv 構造函數(shù),把控制創(chuàng)建唯一對象的那一段去掉,這種修改會給我們帶來不必要的煩惱*///用代理實現(xiàn)單利模式;解決上面的問題var CreateDiv2 = function(html) {this.html = html;this.init();}CreateDiv2.prototype.init = function() {var div = document.createElement('div');div.innerHTML = this.html;document.body.appendChild(div);};//引入代理類var ProxySingleCreateDiv = (function() {var instance;return function(html) {if(!instance) {instance = new CreateDiv2(html);}return instance;}})()var a1 = new ProxySingleCreateDiv('seven1');var b1 = new ProxySingleCreateDiv('seven2');console.log(a1 === b1);</script></html>

?

轉載于:https://www.cnblogs.com/hanhui66/p/7110740.html

總結

以上是生活随笔為你收集整理的单例模式-3.透明的单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。