麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

設(shè)計(jì)模式-單例模式

2019-11-14 11:28:32
字體:
供稿:網(wǎng)友
單例模式能夠確保一個(gè)類只有一個(gè)實(shí)例。自行提供這個(gè)實(shí)例并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。本實(shí)例介紹如何使用這種設(shè)計(jì)模式及單例模式的呀用法實(shí)現(xiàn)單例模式的技術(shù)要點(diǎn)如下:1.單例模式有兩種實(shí)現(xiàn)方式:第一種是將類的構(gòu)造方法私有化,用一個(gè)私有的類變量instance保存類的實(shí)例,在加載類時(shí),創(chuàng)建類的實(shí)例,并將實(shí)例賦給instance;然后再  提供一個(gè)公有的靜態(tài)方法getInstance,用于獲取類的唯一實(shí)例,該方法直接返回instance。第二種是將類的構(gòu)造方法私有化,用一個(gè)私有的類變量instance保存類的實(shí)  例,在加載類時(shí),將null賦予instance;再提供一個(gè)公有的靜態(tài)方法getInstance,用來獲取類的唯一實(shí)例,該方法首先判斷instance是否為null,          如果為null,則創(chuàng)建實(shí)例對象,否則,直接返回instance      2.兩種方式的區(qū)別在于:前者被加載時(shí),類的唯一實(shí)例被創(chuàng)建;后者在第一個(gè)調(diào)用getInstance方法時(shí),類的唯一實(shí)例被創(chuàng)建,但需要在getInstance()方法的聲明中使用                  synchronized關(guān)鍵字,保證某一時(shí)刻只有一個(gè)線程調(diào)用此方法。將類的構(gòu)造方法私有化的原因是,在外界創(chuàng)建一個(gè)新對象時(shí),無法使用new 對象名();的方式來進(jìn)行,因?yàn)?           該對象的無參構(gòu)造函數(shù)是私有的,對外不可見。
package Pattern;class OneSingleton{//第一種方式實(shí)現(xiàn)單例模式	PRivate static int number=0; //私有屬性	private static OneSingleton instance=new OneSingleton();//OneSingleton的唯一實(shí)例	private OneSingleton(){} //將構(gòu)造函數(shù)私有化,防止外界構(gòu)造OneSingleton實(shí)例	public static OneSingleton getInstance(){//獲取OneSingleton的實(shí)例		return instance;	}	public synchronized int  getNumber(){//synchronized關(guān)鍵字表示方法是線程同步		return number;//任意時(shí)刻最多只能有一個(gè)線程進(jìn)入該方法	}	public synchronized void nextNumber(){//將number加1		number++;	}}class TwoSingleton{//第二種方式實(shí)現(xiàn)單例模式	private static int number=0; //私有屬性	private static TwoSingleton instance=null;//TwoSingleton的唯一實(shí)例	private TwoSingleton(){} //將構(gòu)造函數(shù)私有化,防止外界構(gòu)造TwoSingleton實(shí)例	public static TwoSingleton getInstance(){//獲取TwoSingleton的實(shí)例		if(instance==null)		{			instance =new TwoSingleton();		}		return instance;	}	public synchronized int  getNumber(){//synchronized關(guān)鍵字表示方法是線程同步		return number;//任意時(shí)刻最多只能有一個(gè)線程進(jìn)入該方法	}	public synchronized void nextNumber(){//將number加1		number++;	}}public class TextSingleton {	public static void main(String[] args) {		OneSingleton one1=OneSingleton.getInstance();		OneSingleton one2=OneSingleton.getInstance();		System.out.println("用第一種方式OneSingleton實(shí)現(xiàn)到單例模式");		System.out.println("調(diào)用nextNumber方法前");		System.out.println("one1.number="+one1.getNumber());		System.out.println("one2.number="+one2.getNumber());		one1.nextNumber();		System.out.println("調(diào)用nextNumber方法后");		System.out.println("one1.number="+one1.getNumber());		System.out.println("one2.number="+one2.getNumber());		//第二種單例模式		TwoSingleton two1=TwoSingleton.getInstance();		TwoSingleton two2=TwoSingleton.getInstance();		System.out.println("用第二種方式TwoSingleton實(shí)現(xiàn)到單例模式");		System.out.println("調(diào)用nextNumber方法前");		System.out.println("two1.number="+two1.getNumber());		System.out.println("two2.number="+two2.getNumber());		two1.nextNumber();		System.out.println("調(diào)用nextNumber方法后");		System.out.println("two1.number="+two1.getNumber());		System.out.println("two2.number="+two2.getNumber());	}}源程序解讀

1.OneSingleton 和 TwoSingleton類都實(shí)現(xiàn)了單例模式,區(qū)別是

第一種方法在類被加載的時(shí)候就創(chuàng)建類的唯一對象

private static OneSingleton instance=new OneSingleton();第二種方法是第一次調(diào)用 getInstance()方法時(shí)才創(chuàng)建類的唯一實(shí)例 
private static TwoSingleton instance=null;//TwoSingleton的唯一實(shí)例	public static TwoSingleton getInstance(){//獲取TwoSingleton的實(shí)例		if(instance==null)		{			instance =new TwoSingleton();		}		return instance;	}	2.在TwoSingleton類中,getInstance()方法聲明中使用了 synchronized(同步)關(guān)鍵字,以保證同一時(shí)刻只有一個(gè)線程進(jìn)入該方法,這樣,就保證了只會新建一個(gè)對象3. 單例模式的實(shí)現(xiàn)方式將構(gòu)造函數(shù)私有,以防止外界通過調(diào)用構(gòu)造函數(shù)創(chuàng)建類的對象。將類的唯一對象保存為靜態(tài)私有屬性 private OneSingleton(){} 和private TwoSingleton(){},這個(gè)使用new OneSingleton() 和new TwoSingleton()的方式是不可行的 ,然后提供一個(gè)靜態(tài)公有方法getInstance()獲取該唯一對象,可以保證每次返回的都是同一個(gè)對象。
上一篇:theano學(xué)習(xí)初步(一)

下一篇:蘋果

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91毛片网站| 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 久久精品99久久久久久2456 | 国产成人在线一区 | 久久国产成人精品国产成人亚洲 | 国产一区二区亚洲 | 99爱视频在线观看 | 久久成人精品视频 | 91精品国产一区二区三区动漫 | 日韩黄在线观看 | 伊人二本二区 | 免费一级a毛片在线播放视 日日草夜夜操 | 久久精品国产亚洲7777 | 免费一区区三区四区 | www亚洲成人 | 精品成人在线 | 午夜在线视频一区二区三区 | 美女视频黄a视频免费全过程 | 欧美 国产 亚洲 卡通 综合 | 亚洲国产一区二区三区 | 欧美日韩在线播放 | 国产精品视频自拍 | 中文字幕在线视频网站 | 九九视频精品在线 | 黄视频网站免费 | va免费视频 | 污黄视频在线播放 | 欧美18一12sex性处hd | 精品亚洲综合 | jizzjizzjizzjizz国产 | 久久靖品 | 日本欧美一区二区三区在线观看 | 免费黄色小网站 | 亚洲精华液久久含羞草 | 久久精品中文字幕一区 | 国产免费www | 九九热视频这里只有精品 | 久久新地址| 青青草成人av| 日本一区二区免费在线观看 | 欧美精品在线视频观看 |