java学习之单例模式(饿汉式与懒汉式)
生活随笔
收集整理的這篇文章主要介紹了
java学习之单例模式(饿汉式与懒汉式)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
---恢復(fù)內(nèi)容開(kāi)始---
設(shè)計(jì)模式:解決某一類(lèi)問(wèn)題最行之有效的方法 java中有23種設(shè)計(jì)模式 今天學(xué)習(xí)其中一種:單例設(shè)計(jì)模式:解決一個(gè)類(lèi)在內(nèi)存只存在一個(gè)對(duì)象
?
想要保證對(duì)象唯一。
1.為了避免其他程序過(guò)多建立該類(lèi)對(duì)象,先禁止其他程序建立該類(lèi)對(duì)象
2.還為了讓其他程序可以訪問(wèn)到該類(lèi)對(duì)象,只好在本類(lèi)中,自定義一個(gè)對(duì)象
3.為了方便其他程序?qū)ψ远x對(duì)象的訪問(wèn),可以對(duì)外提供一些訪問(wèn)方式
?
這三部分用代碼體現(xiàn):
1.將構(gòu)造函數(shù)私有化
2.在類(lèi)中創(chuàng)建一個(gè)本類(lèi)對(duì)象
3.提供一個(gè)方法可以獲取到該對(duì)象
package com.dreamly.day02;/*** @author dreamly**/ public class SingleDemo {/*** 原則:定義單例,建議使用餓漢式,懶漢式在并發(fā)時(shí)容易出現(xiàn)實(shí)例化混亂的問(wèn)題,只有加鎖和多線程雙重判斷才能解決問(wèn)題,相比餓漢式,代碼量長(zhǎng)了判斷多了而且費(fèi)時(shí)費(fèi)力* */public static void main(String[] args) {Single s1=Single.getInstance();Single s2=Single.getInstance();System.out.println(s1==s2);} } /** 這個(gè)是先初始化對(duì)象* 稱(chēng)為:餓漢式* Single類(lèi)一進(jìn)入內(nèi)存,就已經(jīng)創(chuàng)建好了對(duì)象 /*class Single{private Single() {}private static Single s=new Single();public static Single getInstance() {return s;} } */ /** 對(duì)象是在方法被調(diào)用時(shí),才初始化,又叫對(duì)象的延時(shí)加載* 稱(chēng)為:懶漢式* Single類(lèi)進(jìn)內(nèi)存,對(duì)象還沒(méi)有存在,只有調(diào)用了getInstance方法時(shí),才建立對(duì)象*/ class Single{private static Single s=null;private Single() {};public static Single getInstance() {if(s==null) {synchronized (Single.class) {if(s==null) {s=new Single();}}}return s;} }?
---恢復(fù)內(nèi)容結(jié)束---
轉(zhuǎn)載于:https://www.cnblogs.com/zhaohuan1996/p/8034020.html
總結(jié)
以上是生活随笔為你收集整理的java学习之单例模式(饿汉式与懒汉式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工程规范
- 下一篇: 洛谷 P2695 骑士的工作