-
餓漢與懶漢模式的區(qū)別:前者加載慢,運(yùn)行快。后者加載快,運(yùn)行慢。 但是懶漢的線(xiàn)程安全低!查看全部
-
懶漢模式:1 私有化構(gòu)造方法。2 聲明一個(gè)實(shí)例(即不實(shí)例化)。3 用方法獲取實(shí)例,加一個(gè)判斷,如果聲明的實(shí)例為空,那么返回其實(shí)例化的結(jié)果,否則返回聲明的實(shí)例。查看全部
-
餓漢模式:1 將類(lèi)中的構(gòu)造方法私有化,不讓外界對(duì)其實(shí)例化。2 在類(lèi)中實(shí)現(xiàn)一個(gè)實(shí)例,用private static 修飾實(shí)例。3 用getxxx()方法,獲取實(shí)例,修飾符為public static 。實(shí)現(xiàn)單例之餓漢,在該類(lèi)加載時(shí),其類(lèi)成員變量及方法就已經(jīng)被加載了!查看全部
-
應(yīng)用單例模式:有的對(duì)象有且只有一個(gè)就足夠了。作用:保證整個(gè)應(yīng)用程序中某個(gè)程序有且只有一個(gè)。 類(lèi)型:餓漢模式,懶漢模式。 應(yīng)用舉例:有的工具類(lèi),日志,數(shù)據(jù)庫(kù)的連接等等查看全部
-
使用設(shè)計(jì)模式的目的查看全部
-
設(shè)計(jì)模式的簡(jiǎn)單定義查看全部
-
餓漢模式:加載類(lèi)時(shí)比較慢,但運(yùn)行時(shí)獲取對(duì)象的速度比較快;線(xiàn)程安全。 懶漢模式:加載類(lèi)時(shí)比較快,但運(yùn)行時(shí)獲取對(duì)象的速度比較慢;線(xiàn)程不安全。 //單例模式 --- 餓漢模式 public class Singleton { //1.私有構(gòu)造函數(shù),不允許外部訪(fǎng)問(wèn) private Singleton() { super(); } //2.創(chuàng)建類(lèi)的惟一實(shí)例,私有。 (類(lèi)變量) static private Singleton instance = new Singleton(); //3.提供訪(fǎng)問(wèn)惟一實(shí)例的公共方法(類(lèi)方法) public static Singleton getInstance(){ return instance; } } //單例模式 --- 懶漢模式 public class Singleton2 { //1.私有構(gòu)造函數(shù),不允許外部訪(fǎng)問(wèn) private Singleton2() { super(); } //2.創(chuàng)建類(lèi)的惟一實(shí)例,私有。 (類(lèi)變量) static private Singleton2 instance; //3.提供訪(fǎng)問(wèn)惟一實(shí)例的公共方法(類(lèi)方法) public static Singleton2 getInstance(){ if(instance == null){ instance = new Singleton2(); } return instance; } } public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if(s1==s2){ System.out.println("同一個(gè)"); }else{ System.out.println("不同"); } } }查看全部
-
設(shè)計(jì)模式: 一套被反復(fù)使用、多數(shù)人知曉的,經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。 目的: 提交代碼重用性,更容易被理解,保證代碼的可靠性。 23種設(shè)計(jì)模式: 單例模式、工廠(chǎng)模式..... 單例模式: 有些對(duì)象只需要一個(gè):配置文件、緩存、日志對(duì)象等。 (使用單例模式)保證整個(gè)應(yīng)用中某個(gè)實(shí)例有且只有一個(gè)。查看全部
-
懶漢模式與餓漢模式的區(qū)別: 懶漢模式:要在第一次被引用時(shí),才會(huì)將自己實(shí)例化,需要做雙重鎖定這樣的處理才可以保證線(xiàn)程安全。 餓漢模式:即靜態(tài)初始化的方式,在類(lèi)被加載時(shí)就將類(lèi)實(shí)例化,所以要提前占用系統(tǒng)資源,線(xiàn)程安全。查看全部
-
懶漢模式實(shí)現(xiàn)步驟: 1:將構(gòu)造方法私有化,不允許外邊直接創(chuàng)建對(duì)象(與餓漢模式一樣) 2:聲明類(lèi)的唯一實(shí)例,使用private static 修飾(只聲明,并不實(shí)例化) 3:提供一個(gè)用于獲取實(shí)例的方法,使用public static 修飾(只有在第一次調(diào)用的時(shí)候?qū)嵗?查看全部
-
單例模式的要點(diǎn)(饑漢模式): 應(yīng)用場(chǎng)合:有些對(duì)象在項(xiàng)目中只需要一個(gè)就夠了。 作用:保證整個(gè)應(yīng)用程序中某個(gè)實(shí)例有且只有一個(gè) 實(shí)現(xiàn)步驟: 1.將構(gòu)造方法私有化,不允許外部直接創(chuàng)建對(duì)象 2.創(chuàng)建類(lèi)的唯一實(shí)例,使用private static 修飾 3.提供一個(gè)用于獲取實(shí)例的方法,使用private static 修飾查看全部
-
懶漢模式 餓漢模式一般在引入類(lèi)的時(shí)候就已經(jīng)創(chuàng)建實(shí)例,而且是靜態(tài)變量。缺點(diǎn)是比較消耗程序資源。 步驟: 1.將構(gòu)造方法私有化 2.定義類(lèi)的唯一實(shí)例(不實(shí)例化) 3.提供對(duì)外獲取實(shí)例的方法 4.在提供對(duì)外獲取實(shí)例的方法時(shí),判斷是否已經(jīng)創(chuàng)建示例,沒(méi)創(chuàng)建再創(chuàng)建示例。 package singleton; /** * 單例模式 懶漢模式 * @author Lizhijun * */ public class Singleton2 { //1.將構(gòu)造方法私有化 private Singleton2(){ } //2.定義類(lèi)的唯一實(shí)例(不實(shí)例化) private static Singleton2 instance; //3.在提供對(duì)外獲取實(shí)例的方法時(shí),判斷是否已經(jīng)創(chuàng)建示例,沒(méi)創(chuàng)建再創(chuàng)建示例。 public static Singleton2 getInstance() { if (instance==null) { instance = new Singleton2(); } return instance; } } package singleton; public class Test { public static void main(String[] args) { Singleton2 s3 = Singleton2.getInstance(); Singleton2 s4 = Singleton2.getInstance(); if (s3==s4) { System.out.println("s3和s4是同一實(shí)例"); }else{ System.out.println("s3和s4不是同一實(shí)例"); } } }查看全部
-
單例模式 使用情形: 在有些情況下,對(duì)象有且只有一個(gè)的時(shí)候可以使用單例模式,比如:配置文件,工具類(lèi),線(xiàn)程池,日志,緩存對(duì)象等 常見(jiàn)單例模式: 餓漢模式 懶漢模式 餓漢模式 餓漢模式一般在引入類(lèi)的時(shí)候就已經(jīng)創(chuàng)建實(shí)例,而且是靜態(tài)變量。缺點(diǎn)是比較消耗程序資源。 步驟: 1.將構(gòu)造方法私有化 2.創(chuàng)建類(lèi)的唯一實(shí)例 3.提供對(duì)外獲取實(shí)例的方法 package singleton; /** * 單例模式 餓漢模式 * @author Lizhijun * */ public class Singleton1 { //1.將構(gòu)造方法私有化 private Singleton(){ } //2.創(chuàng)建類(lèi)的唯一實(shí)例 private static Singleton instance = new Singleton(); //3.提供對(duì)外獲取實(shí)例的方法 public static Singleton getInstance() { return instance; } } package singleton; public class Test { public static void main(String[] args) { Singleton s1 = Singleton1.getInstance(); Singleton s2 = Singleton1.getInstance(); if (s1==s2) { System.out.println("s1和s2是同一實(shí)例"); }else{ System.out.println("s1和s2不是同一實(shí)例"); } } }查看全部
-
私有方法不允許外部直接創(chuàng)建實(shí)例查看全部
-
區(qū)別 、、、、查看全部
舉報(bào)
0/150
提交
取消