Java語(yǔ)言實(shí)戰(zhàn)開(kāi)發(fā)——單例設(shè)計(jì)模板與抽象類實(shí)現(xiàn)模板設(shè)計(jì)模式

單例設(shè)計(jì)模板

1.私有化所有的構(gòu)造方法 不讓外部自己創(chuàng)建
2.給外部提供一個(gè)靜態(tài)方法 獲取當(dāng)前類的一個(gè)對(duì)象
3.必須定義一個(gè)靜態(tài)成員變量來(lái)保存當(dāng)前類的唯一一個(gè)對(duì)象
4.創(chuàng)建對(duì)象:

餓漢式

在定義靜態(tài)成員變量時(shí),直接創(chuàng)建當(dāng)前類的一個(gè)對(duì)象 進(jìn)行賦值

 private static HttpOperation instance = new HttpOperation();

餓漢式的對(duì)象不需要擔(dān)心線程問(wèn)題

懶漢式

public class HttpOperation {
    private static HttpOperation instance;
    private HttpOperation(){

    }
    public static HttpOperation getInstance(){
        //判斷對(duì)象是否有值
        if(instance == null) {
            //加鎖
            synchronized (HttpOperation.class) {
                if (instance == null) {

                    //創(chuàng)建一個(gè)對(duì)象
                    instance = new HttpOperation();
                }
            }
        }
        return instance;
    }
}

懶漢式相對(duì)于餓漢式更為麻煩 需要設(shè)計(jì)加鎖步驟,防止創(chuàng)建重復(fù)的對(duì)象。

抽象類實(shí)現(xiàn)模板設(shè)計(jì)模式

public abstract class Activity {
    private String className;

    public Activity(){
        //子類必須實(shí)現(xiàn)的方法
        onCreate();
        //可以選擇實(shí)現(xiàn)的方法
        onStart();
        onResume();
        onPause();
        onStop();
        onDestroy();
    }

    //界面布局
    public abstract void onCreate();
    //開(kāi)始啟動(dòng)
    public void onStart(){
    }
    //界面顯示出來(lái) 可以交互了
    public void onResume(){
    }
    //暫停
    public void onPause(){
    }
    //已經(jīng)停止
    public void onStop(){
    }
    //銷毀
    public void onDestroy(){
    }
    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

模板里面定義執(zhí)行的過(guò)程 (有些功能自己可以實(shí)現(xiàn),有些必須子類實(shí)現(xiàn))
1.抽象類使用abstract修飾
2.抽象類不能被實(shí)例化 不能使用Activity ad = new Activity();
3.抽象類里面可以定義成員變量方法 抽象方法必須使用abstract修飾 而且不能實(shí)現(xiàn)只能被子類實(shí)現(xiàn)
4.子類繼承與抽象類:
子類實(shí)現(xiàn)抽象類里面的抽象方法,如果不想實(shí)現(xiàn),也可以將自己變成抽象類。
子類繼承:

public class MainActivity extends Activity {
    //抽象方法必須實(shí)現(xiàn)
    @Override
    public void onCreate() {
        System.out.println("創(chuàng)建首頁(yè)界面");
    }
    //子類可以重寫父類方法
    @Override
    public void onResume() {
        System.out.println("界面啟動(dòng)了,開(kāi)始交互");
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容