單例設(shè)計(jì)模式
一個(gè)類只有一個(gè)對象
1.私有化所有構(gòu)造方法,不讓外部創(chuàng)建對象
2.給外部提供一個(gè)方法獲取當(dāng)前類的對象
3.定義一個(gè)靜態(tài)變量保存唯一的對象
private static 類名 對象;
public static 類名 方法名(){
return 對象;
}
4.創(chuàng)建對象
餓漢式:在定義靜態(tài)成員變量時(shí) 直接創(chuàng)建當(dāng)前類的一個(gè)對象 進(jìn)行賦值
懶漢式:默認(rèn)不創(chuàng)建對象,當(dāng)調(diào)用的時(shí)候才創(chuàng)建
為了線程安全,需要加鎖
if(instance == null){//判斷對象是否有值
synchronized (HttpOperation.class){//加鎖
if(instance == null){
instance = new HttpOperation();
}
}
}
如圖,保證了單一對象

image.png
模板設(shè)計(jì)模式---主要使用抽象類實(shí)現(xiàn)
模板里面定義執(zhí)行的過程(有些功能自己可以實(shí)現(xiàn) 有些功能必須子類實(shí)現(xiàn))
抽象類用abstract修飾
抽象類不能被實(shí)例化
抽象類可以定義成員變量和方法
抽象方法用abstract修飾,且只能被子類實(shí)現(xiàn)
子類繼承于抽象類,子類要實(shí)現(xiàn)抽象類里面的抽象方法,如果不想實(shí)現(xiàn)可以將自己也變成抽象類,其他方法可以選擇實(shí)現(xiàn)(使用重寫)
抽象類和不同類的區(qū)別
抽象類不能實(shí)例化,但是普通類可以
抽象類里面可以由抽象方法(只申明,不能實(shí)現(xiàn),也不能有主體),普通類不行
實(shí)驗(yàn)操作
父類Act

image.png
子類Action

image.png
創(chuàng)建了一個(gè)子類的對象并運(yùn)行

image.png