Singleton Pattern(單例模式)
改善全局變量和命名空間的沖突,可以說(shuō)是一種改良了的全局變量。這種一個(gè)類(lèi)只有一個(gè)實(shí)例,且提供一個(gè)訪問(wèn)全局點(diǎn)的方式,更加靈活的保證了實(shí)例的創(chuàng)建和訪問(wèn)約束。
有時(shí)候在使用類(lèi)的時(shí)候,這個(gè)類(lèi)必須存在,但是我們又要求這個(gè)類(lèi)在整個(gè)工程中只能有一個(gè)對(duì)象,無(wú)論什么時(shí)候調(diào)用都只能調(diào)用這唯一的一個(gè)對(duì)象,怎么做呢?
這種模式的核心跟javaBean有點(diǎn)類(lèi)似,不同在于單例模式要求創(chuàng)建并私有化一個(gè)對(duì)象,同時(shí)私有化構(gòu)造方法,重寫(xiě)構(gòu)造方法使其返回這個(gè)對(duì)象。為了能夠使用這個(gè)對(duì)象,我們?cè)谄渲袆?chuàng)建一個(gè)靜態(tài)的Get方法用來(lái)返回該對(duì)象。
一般的我們會(huì)用兩種單例模式的方法,一個(gè)是延遲加載,又叫懶漢式,另一個(gè)是非延遲加載,又稱餓汗式。區(qū)別在于前者是在調(diào)用的時(shí)候才生成對(duì)象,而后者則是事先生成對(duì)象;方法區(qū)別在于是否把生成對(duì)象放入get方法(可以加入判斷如果該對(duì)象不存在就new一個(gè),存在的話就返回該已存在的對(duì)象)。
這種思想在很多地方都會(huì)使用,用同樣的思想我們可以解決更多的問(wèn)題。
23種模式想了解更多的話可以去谷歌看看。我們重點(diǎn)不是掌握幾種方法,而是駕馭這種思想,靈活使用這種方法。高內(nèi)聚,低耦合,在寫(xiě)程序之前就要對(duì)整個(gè)過(guò)程了解很透徹,而不是邊寫(xiě)邊想究竟該怎么布局。