摘要:最近在看一些深度學(xué)習(xí)的一些資料由于大規(guī)模的模型訓(xùn)練對(duì)代碼效率質(zhì)量要求比較高最近在復(fù)習(xí)一些設(shè)計(jì)模式和算法的資料我會(huì)保持每周一篇的節(jié)奏基本上就會(huì)講算法和設(shè)計(jì)模式,寫(xiě)文章的同時(shí)加深一下自己的記憶,有錯(cuò)誤之處望大家指正什么是設(shè)計(jì)模式設(shè)計(jì)模式就是自古
最近在看一些深度學(xué)習(xí)的一些資料 由于大規(guī)模的模型訓(xùn)練對(duì)代碼效率質(zhì)量要求比較高最近在復(fù)習(xí)一些設(shè)計(jì)模式和算法的資料 我會(huì)保持每周一篇的節(jié)奏基本上就會(huì)講算法和設(shè)計(jì)模式,寫(xiě)文章的同時(shí)加深一下自己的記憶,有錯(cuò)誤之處望大家指正
什么是設(shè)計(jì)模式? 設(shè)計(jì)模式就是 自古空氣多余恨,唯有套路得人心 設(shè)計(jì)模式就寫(xiě)代碼的一種套路 就像我們中華武術(shù)的套路一樣各個(gè)門派都有自己固定的套路,代碼也一樣不同的場(chǎng)景應(yīng)用不同的代碼套路,這些套路是大家總結(jié)出來(lái)公認(rèn)比較好的一種代碼編寫(xiě)思想(代碼編寫(xiě)套路)
單例模式:他是一種設(shè)計(jì)模式,他的作用是讓一個(gè)類只能擁有一個(gè)實(shí)例 不論你創(chuàng)建 調(diào)用了多少次 他還是只有一個(gè)實(shí)例
單例模式通用的有兩種寫(xiě)法 一種叫做 餓漢模式 一種叫懶漢模式
餓漢式
package singleCase; /** * 單例 餓漢模式 * 餓漢模式下 實(shí)例隨著類的加載而創(chuàng)建 * @author admin * */ public class HungryManPattern { //創(chuàng)建類的 唯一實(shí)例(注意是唯一實(shí)列) private static 修飾 private static HungryManPattern singleCase = new HungryManPattern(); //將構(gòu)造方法私有化 杜絕通過(guò)構(gòu)造方法創(chuàng)建實(shí)例 private HungryManPattern(){ } //提供一個(gè)獲取實(shí)例(你也可以理解成對(duì)象)的方法 public static HungryManPattern getsingleCase(){ return singleCase; } }
懶漢式
懶漢式 [java] view plain copy package singleCase; /** * 懶漢模式 * @author admin * */ public class lazyPattern { //聲明一個(gè) lazyPattern 變量 private static lazyPattern singleCase; //將構(gòu)造方法私有化 杜絕通過(guò)構(gòu)造方法創(chuàng)造實(shí)例 private lazyPattern(){ } //提供公共方法訪問(wèn)實(shí)例 public static lazyPattern getsingleCase(){ //如果 singleCase 為空的時(shí)候我們?yōu)樗麆?chuàng)建一個(gè)實(shí)例 if(singleCase == null){ singleCase = new lazyPattern(); } return singleCase; } }
我們可以用一個(gè)測(cè)試類來(lái)看他是創(chuàng)建了幾個(gè)實(shí)例
package singleCase; public class sibgleCaseTest { public static void main(String[] args) { HungryManPattern t1 = HungryManPattern.getsingleCase(); HungryManPattern t2 = HungryManPattern.getsingleCase(); if(t1 == t2){ System.out.println("餓漢式 只創(chuàng)建了一個(gè)實(shí)例 "); } lazyPattern s1 = lazyPattern.getsingleCase(); lazyPattern ss2 = lazyPattern.getsingleCase(); if(t1 == t2){ System.out.println("懶漢式 只創(chuàng)建了一個(gè)實(shí)例 "); } } }
運(yùn)行結(jié)果
發(fā)現(xiàn)問(wèn)題請(qǐng)聯(lián)系我(小弟在這多謝指教)郵箱wavesape@126.com addPerson : hzb 2018-3-10 00:19:12
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68731.html
摘要:總結(jié)單例是運(yùn)用頻率很高的模式,因?yàn)榭蛻舳藳](méi)有高并發(fā)的情況,選擇哪種方式并不會(huì)有太大的影響,出于效率考慮,推薦使用和靜態(tài)內(nèi)部類實(shí)現(xiàn)單例模式。 單例模式介紹 單例模式是應(yīng)用最廣的模式之一,也可能是很多人唯一會(huì)使用的設(shè)計(jì)模式。在應(yīng)用單例模式時(shí),單例對(duì)象的類必須保證只用一個(gè)實(shí)例存在。許多時(shí)候整個(gè)系統(tǒng)只需要一個(gè)全局對(duì)象,這樣有利于我么能協(xié)調(diào)整個(gè)系統(tǒng)整體的行為。 單例模式的使用場(chǎng)景 確保某個(gè)類有且...
摘要:不符合設(shè)計(jì)模式中的單一職責(zé)的概念。引入代理實(shí)現(xiàn)單例模式引入代理實(shí)現(xiàn)單例模式的特點(diǎn)我們負(fù)責(zé)管理單例的邏輯移到了代理類中。的單例模式對(duì)比在以上的代碼中實(shí)現(xiàn)的單例模式都混入了傳統(tǒng)面向?qū)ο笳Z(yǔ)言的特點(diǎn)。 聲明:這個(gè)系列為閱讀《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》 ----曾探@著一書(shū)的讀書(shū)筆記 1.單例模式的特點(diǎn)和定義 保證一個(gè)類僅有一個(gè)實(shí)例,并且提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 2.傳統(tǒng)面向?qū)?..
摘要:但是,這并不是采用單例的唯一原因。使用命名空間單例模式也被稱為模塊設(shè)計(jì)模式。函數(shù)內(nèi)部聲明了一些局部函數(shù)和或變量。緊隨函數(shù)聲明放置即可立即執(zhí)行外部函數(shù),并將所得的對(duì)象文字費(fèi)賠給變量。 JavaScript設(shè)計(jì)模式-第一部分:?jiǎn)卫J?、組合模式和外觀模式 設(shè)計(jì)模式是一些可靠的編程方式,有助于保證代碼更加易于維護(hù)、擴(kuò)展及分離,所有設(shè)計(jì)模式在創(chuàng)建大型JavaScript應(yīng)用程序時(shí)均不可或缺 單...
摘要:如果需要防范這種攻擊,請(qǐng)修改構(gòu)造函數(shù),使其在被要求創(chuàng)建第二個(gè)實(shí)例時(shí)拋出異常。單例模式與單一職責(zé)原則有沖突。源碼地址參考文獻(xiàn)設(shè)計(jì)模式之禪 定義 單例模式是一個(gè)比較簡(jiǎn)單的模式,其定義如下: 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 或者 Ensure a class has only one instance, and provide a global point of ac...
摘要:在設(shè)計(jì)模式一書(shū)中,將單例模式稱作單件模式。通過(guò)關(guān)鍵字,來(lái)保證不會(huì)同時(shí)有兩個(gè)線程進(jìn)入該方法的實(shí)例對(duì)象改善多線程問(wèn)題為了符合大多數(shù)程序,很明顯地,我們需要確保單例模式能在多線程的情況下正常工作。 在《Head First 設(shè)計(jì)模式》一書(shū)中,將單例模式稱作單件模式。這里為了適應(yīng)大環(huán)境,把它稱之為大家更熟悉的單例模式。 一、了解單例模式 1.1 什么是單例模式 單例模式確保一個(gè)類只有一個(gè)實(shí)例,...
閱讀 1113·2021-11-19 09:40
閱讀 969·2021-11-12 10:36
閱讀 1259·2021-09-22 16:04
閱讀 3106·2021-09-09 11:39
閱讀 1266·2019-08-30 10:51
閱讀 1882·2019-08-30 10:48
閱讀 1221·2019-08-29 16:30
閱讀 464·2019-08-29 12:37