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