單例模式:
眾所周知android是基于java編程語言的一種操作系統(tǒng), 所以只要懂java熟悉android api大都可以進(jìn)行簡單的項目開發(fā), 但移動端設(shè)備的硬件資源是有限的, 所以要做出一個高性能的產(chǎn)品是需要強大內(nèi)功的.
例:
1.Java功底
2.android熟悉程度
3.設(shè)計模式
開發(fā)一款android產(chǎn)品Java功底和android熟悉程度拋開不說, 今天我們來講下設(shè)計模式. 設(shè)計模式不僅僅java和android有, 其他很多語言也都具備, ok 開始今天的話癆.
單例模式:
單例模式屬于創(chuàng)建型模式中的一員, 此模式中, 類公開定義一個函數(shù)對外開放當(dāng)前實例, 同時構(gòu)造方法是私有的.
構(gòu)造方法私有作用: 確保我們的對象在外部不能通過new關(guān)鍵字進(jìn)行創(chuàng)建對象以達(dá)到單例.
單例模式整體分為兩種:
1.懶漢模式
2.餓漢模式
懶漢模式
當(dāng)需要對象時才會進(jìn)行構(gòu)建, 避免不必要的內(nèi)存開銷.
餓漢模式
當(dāng)類加載時就去創(chuàng)建對象, 類似一種預(yù)加載, 這種情況需要考慮實際業(yè)務(wù), 并非全部的業(yè)務(wù)都需要使用懶加載模式.
例(懶漢模式):
public class Singleton2 {
private Singleton2() {}
public static Singleton2 getInstance(){
return Inner.sInstance;
}
static class Inner {
private static final Singleton2 sInstance = new Singleton2();
}
}
例(餓漢模式):
public class Singleton3 {
private Singleton3() {}
private static Singleton3 sInstance = new Singleton3();
public static Singleton3 getInstance() {
return sInstance;
}
}
總結(jié):
主要解決:一個全局使用的類頻繁地創(chuàng)建與銷毀.
何時使用:當(dāng)您想控制實例數(shù)目柬唯,節(jié)省系統(tǒng)資源的時候.
關(guān)鍵代碼:構(gòu)造函數(shù)是私有的.
優(yōu)點:整個進(jìn)程中對象的實例保證唯一一個, 避免內(nèi)存的多次開銷.
缺點:沒有接口粥帚,不能繼承.
喜歡有幫助的話: 雙擊嘀韧、評論窃款、轉(zhuǎn)發(fā)颂暇,動一動你的小手讓更多的人知道!關(guān)注 帥比-楊