-
設(shè)計(jì)模式:是一套被反復(fù)使用、所屬人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)
查看全部 -
單例模式 --- 懶漢模式
class?Singleton?{ ????//1.將構(gòu)造方法私有化,使外部無(wú)法直接創(chuàng)建對(duì)象 ????private?Singleton()?{ ????} ???? ????//2.創(chuàng)建類的唯一實(shí)例 ????private?static?Singleton?instance; ???? ????//3.提供獲取實(shí)例的方法 ????public?static?Singleton?getInstance()?{ ????????if(instance==null){ ????????????instance?=?new?Singleton(); ????????} ????????return?instance; ????} }
特點(diǎn):在第一次調(diào)用時(shí),實(shí)例化對(duì)象。(特點(diǎn)加載類較快,調(diào)用較慢)
查看全部 -
單例模式 --- 餓漢模式
class?Singleton?{ ????//1.將構(gòu)造方法私有化,使外部無(wú)法直接創(chuàng)建對(duì)象 ????private?Singleton()?{ ????} ???? ????//2.創(chuàng)建類的唯一實(shí)例 ????private?static?Singleton?instance?=?new?Singleton(); ???? ????//3.提供獲取實(shí)例的方法 ????public?static?Singleton?getInstance()?{ ????????return?instance; ????} }
特點(diǎn):在加載類時(shí)實(shí)例化對(duì)象。(加載類較慢,但調(diào)用較快)
查看全部 -
//區(qū)別:餓漢模式的特點(diǎn)是加載類時(shí)比較慢,但運(yùn)行時(shí)獲取對(duì)象的速度比較快,線程安全
//懶漢模式的特點(diǎn)是加載類時(shí)比較快,但運(yùn)行時(shí)獲取對(duì)象的速度比較慢,線程不安全
查看全部 -
//單例模式:懶漢模式
public class Singleton2{
//1、將構(gòu)造方式私有化,不允許外邊直接創(chuàng)建對(duì)象
private Singleton2(){}
//2、創(chuàng)建類的唯一實(shí)例,使用private static修飾
private static Singleton2 instance;
//3、提供一個(gè)用于獲取實(shí)例的方法,使用public static修飾
public static Singleton2 getInstance(){
if(instance==null)
{
instance=new Singleton2();
}
return instance;
}
}
public class Test{
public static void main(String[] args)
{
Singleton s1=Singleton2.getInstance();
Singleton s2=Singleton2.getInstance();
if(s1==s2)
{
System.out.println("s1和s2是同一個(gè)實(shí)例");
}else{
System.out.println("s1和s2不是同一個(gè)實(shí)例");
}
}
}
查看全部 -
//單例模式:餓漢模式
public class Singleton{
//1、將構(gòu)造方法私有化,不允許外部直接創(chuàng)建對(duì)象
private Singleton(){}
//2、創(chuàng)建類的唯一實(shí)例,使用private static修飾
private static Singleton instance=new Singleton();
//3、提供一個(gè)用于獲取實(shí)例的方法
public static Singleton getInstace()
{
return instance;
}
}
public class Test{
public static void main(String[] args)
{
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2)
{
System.out.println("s1和s2是同一個(gè)實(shí)例");
}else{
System.out.println("s1和s2不是同一個(gè)實(shí)例");
}
}
}
查看全部 -
設(shè)計(jì)模式:懶漢模式、餓漢模式
目的:可重用代碼、易理解、保證代碼可靠性
單例模式使用:在有些對(duì)象我們只需要一個(gè)的時(shí)候,比如:配置文件、工具類、線程池、緩存、日志對(duì)象等。如果創(chuàng)造多個(gè)實(shí)例,就會(huì)導(dǎo)致許多問(wèn)題,比如占用過(guò)多資源,不一致的結(jié)果等。
查看全部 -
單例模式 1:餓漢模式,加載慢,獲取快,線程安全 2:懶漢模式,加載快,獲取慢,線程不安全 單列模式分為: 餓漢式:聲明的同時(shí)直接實(shí)例化。 特點(diǎn):加載類時(shí)比較慢,但運(yùn)行時(shí)獲取對(duì)象的速度比較快,線程安全。 懶漢式:聲明的時(shí)候不實(shí)例化。 特點(diǎn):加載類時(shí)比較快,但運(yùn)行時(shí)獲取對(duì)象的速度比較慢,線程不安全。 實(shí)現(xiàn)單列模式的三個(gè)步驟: 1、將構(gòu)造方法私有化,不允許外界直接創(chuàng)建對(duì)象。 2、聲明類的唯一實(shí)例,使用private static修飾。 3、提供一個(gè)供外界獲取實(shí)例的方法,使用public static修飾。
查看全部 -
1、單例模式,懶漢模式:與餓漢不同的是在創(chuàng)建唯一實(shí)例時(shí)不new初始化 2、懶漢模式: a.將構(gòu)造函數(shù)私有化 b.聲明類的唯一實(shí)例,并且私有化 c.提供一個(gè)static修飾的方法獲取當(dāng)前類所創(chuàng)建的唯一的類實(shí)例。 3、理解懶漢:在加載類的時(shí)候,只是聲明一個(gè)引用,并沒(méi)有實(shí)例化。只有第一次調(diào)用共有方法時(shí)才實(shí)例化。形象:不急切的,慵懶的
查看全部 -
1、什么是設(shè)計(jì)模式:? 程序設(shè)計(jì)的套路,是一套被反復(fù)使用,多數(shù)人知曉的,經(jīng)過(guò)分類編目的,代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。 2、使用設(shè)計(jì)模式的目的? 使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解,保證代碼的可靠性。 3、常見(jiàn)的設(shè)計(jì)模式: 單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式等 4、軟件開(kāi)發(fā)的目標(biāo) 分析問(wèn)題的能力 5、什么是單例模式: 整個(gè)項(xiàng)目中,有些對(duì)象只需要一個(gè)比如: 配置文件,工具類,線程池,緩存,日志對(duì)象等。 如果創(chuàng)造出多個(gè)實(shí)例會(huì)造成許多的問(wèn)題, 比如占用過(guò)多的資源,不一致的結(jié)果等。 單例模式: 保證整個(gè)應(yīng)用中某個(gè)實(shí)例有且只有一個(gè)。 6、原理: 1、私有化構(gòu)造方法(使用private關(guān)鍵字修飾構(gòu)造方法),不允許外部直接創(chuàng)建多個(gè)實(shí)例。 2、保證有一個(gè)實(shí)例(分為懶漢和餓漢兩種實(shí)例化方法),在類內(nèi)部創(chuàng)建一個(gè)私有的自己的實(shí)例,類的唯一實(shí)例。 3. 提供一個(gè)用于獲取實(shí)例的方法 7、分類 餓漢模式:加載類時(shí)比較慢,但運(yùn)行時(shí)獲取對(duì)象的速度比較快;線程安全。 懶漢模式:加載類時(shí)比較快,但運(yùn)行時(shí)獲取對(duì)象的速度比較慢;線程不安全。
//單例模式?---?餓漢模式 public?class?Singleton?{ //1.私有構(gòu)造函數(shù),不允許外部訪問(wèn) private?Singleton()?{ } //2.創(chuàng)建類的惟一實(shí)例,私有。?(類變量) private??static??Singleton?instance?=?new?Singleton(); //3.提供訪問(wèn)惟一實(shí)例的公共方法(類方法) public?static?Singleton?getInstance(){ return?instance; } } //單例模式?---?懶漢模式 public?class?Singleton2?{ //1.私有構(gòu)造函數(shù),不允許外部訪問(wèn) private?Singleton2()?{} //2.創(chuàng)建類的惟一實(shí)例,私有。?(類變量) static?private?Singleton2?instance; //3.提供訪問(wèn)惟一實(shí)例的公共方法(類方法) public?static?Singleton2?getInstance(){ if(instance?==?null){ instance?=?new?Singleton2(); } return?instance; } }
查看全部 -
設(shè)計(jì)模式:一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。 目的:可重用代碼,讓代碼更容易被他人理解、保證代碼可靠性。 單例模式: 有些對(duì)象只需要一個(gè),如:配置文件、工具類、線程池、緩存、日志對(duì)象等 多個(gè)程序讀取一個(gè)配置文件,實(shí)際上配置文件還是只有一個(gè),如果創(chuàng)造出多個(gè)實(shí)例,就會(huì)導(dǎo)致很多問(wèn)題,占用資源過(guò)多,不一致的結(jié)果等 Java中的設(shè)計(jì)模式:23種 創(chuàng)建型模式:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式; 結(jié)構(gòu)型模式:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式; 行為型模式:策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問(wèn)者模式、中介者模式、解釋器模式; 其它:并發(fā)型模式和線程池模式;
查看全部 -
另一個(gè)區(qū)別是
餓漢模式線程安全
懶漢模式線程不安全
查看全部 -
懶漢模式he餓漢模式的區(qū)別
查看全部 -
此處僅作聲明未進(jìn)行實(shí)例化,即當(dāng)類被加載時(shí)并未創(chuàng)建該唯一實(shí)例,而是當(dāng)用戶獲取該實(shí)例時(shí)進(jìn)行判斷為空后,才創(chuàng)建實(shí)例,此后再有其他用戶獲取時(shí),就不進(jìn)行創(chuàng)建了,因?yàn)樵谂袛鄷r(shí)不為空即實(shí)例已存在,直接返回第一次創(chuàng)建好的實(shí)例
查看全部 -
進(jìn)行測(cè)試!
創(chuàng)建實(shí)例? 第15行
查看全部
舉報(bào)