單例模式,工廠模式

單例模式

使用單例模式構(gòu)建的類黑界,在整個程序運行期間該類只存在一個實例對象。

實現(xiàn)方式
  • 用 private 修飾類的構(gòu)造方法皂林,這樣就不能在類的外部使用 new 關(guān)鍵字來創(chuàng)建實例對象朗鸠。

  • 在類的內(nèi)部創(chuàng)建一個該類的對象,使用 private static 修飾础倍。

  • 提供一個外部能獲取該類對象的靜態(tài)方法烛占。

1.餓漢模式
public class SingleLineDemo {

    private SingleLineDemo() {

    }

    private static final SingleLineDemo SINGLELINE_DEMO = new SingleLineDemo();

    public static SingleLineDemo getSingleLineDemoInstance() {

        return SINGLELINE_DEMO;
    }
}
2.懶漢模式
public class SingleLineDemo {

    private SingleLineDemo() {

    }

    private static SingleLineDemo sLineDemo = null;

    public static SingleLineDemo getSingleLineDemoInstance() {
        // 存在線程安全問題
        if (sLineDemo == null) {
            sLineDemo = new SingleLineDemo();
        }
        return sLineDemo;
    }
}
3.綜合升級
public class SingleLineDemo {

    private SingleLineDemo() {

    }

    private static SingleLineDemo sLineDemo = null;

    public static SingleLineDemo getSingleLineDemoInstance() {
        // 雙重校驗,解決線程安全沟启,并效率相對較高
        if (sLineDemo == null)
            synchronized (sLineDemo) {
                if (sLineDemo == null)
                    sLineDemo = new SingleLineDemo();
            }

        return sLineDemo;
    }
}

工廠模式

工廠模式就是根據(jù)傳入的標(biāo)記忆家,生產(chǎn)不同類的模式。

//接口定義公共規(guī)范
public interface IWidget {
    void widget();
}

public class FirstProduct implements IWidget {

    @Override
    public void widget() {
        System.out.println("產(chǎn)品1的組件");
    }
}

public class SecondProduct implements IWidget {

    @Override
    public void widget() {
        System.out.println("產(chǎn)品2的組件");
    }
}

 public static void main(String[] args) {

        IWidget productWidget = getProductWidget(0);
        productWidget.widget();
    }

    //工廠模式德迹,根據(jù)標(biāo)記生成相應(yīng)的類
    public static IWidget getProductWidget(int type) {
        switch (type) {
            case 0:
                return new FirstProduct();

            case 1:
                return new SecondProduct();
        }
        return null;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芽卿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胳搞,更是在濱河造成了極大的恐慌卸例,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肌毅,死亡現(xiàn)場離奇詭異筷转,居然都是意外死亡,警方通過查閱死者的電腦和手機悬而,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門呜舒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摊滔,你說我怎么就攤上這事阴绢。” “怎么了艰躺?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵呻袭,是天一觀的道長。 經(jīng)常有香客問我腺兴,道長左电,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮篓足,結(jié)果婚禮上段誊,老公的妹妹穿的比我還像新娘。我一直安慰自己栈拖,他們只是感情好连舍,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涩哟,像睡著了一般索赏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贴彼,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天潜腻,我揣著相機與錄音,去河邊找鬼器仗。 笑死融涣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的精钮。 我是一名探鬼主播威鹿,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杂拨!你這毒婦竟也來了专普?” 一聲冷哼從身側(cè)響起悯衬,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤弹沽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后筋粗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體策橘,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年娜亿,在試婚紗的時候發(fā)現(xiàn)自己被綠了丽已。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡买决,死狀恐怖沛婴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情督赤,我是刑警寧澤嘁灯,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站躲舌,受9級特大地震影響丑婿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一羹奉、第九天 我趴在偏房一處隱蔽的房頂上張望秒旋。 院中可真熱鬧,春花似錦诀拭、人聲如沸迁筛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑰煎。三九已至,卻和暖如春俗孝,著一層夾襖步出監(jiān)牢的瞬間酒甸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工赋铝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留插勤,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓革骨,卻偏偏與公主長得像农尖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子良哲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容