国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

設計模式之禪-單例模式

2019-11-06 06:28:50
字體:
供稿:網(wǎng)友

1.定義

    Ensure a class has only one instance, and PRovide a global point of access to it.

    確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。

2.常用代碼

    private class Singleton{

private static final Singleton singleton  = new Singleton();//創(chuàng)建一個不可更改的靜態(tài)的Singleton對象。

private Singleton(){//私有構(gòu)造器,外界無法new 出Singleton對象。

}

public static Singleton getInstance(){//獲取singleton

return singleton;

}

public void doSometing(){

//邏輯處理

}

}

  優(yōu)點:只有一個實例,減少了內(nèi)存開支,特別是當一個對象需要頻繁地創(chuàng)建,銷毀時。  缺點:單例模式?jīng)]有接口,擴展很困難,對測試也不利。  上面的例子在并發(fā)的情況下,會有線程安全的問題出現(xiàn)。解決方法是在獲取Singleton對象的方法上加上synchronized。

3.獲取固定數(shù)量的對象

    public class MutilSingleton{private static Integer maxNum = 2;//指定固定數(shù)量private static ArrayList<MutilSingleton>  list    =  new  ArrayList();//容納所有的MutilSingleton對象static{ //初始化list集合for(int i=0; i<maxNum; i++){list.add(new MutilSingleton());}}private MutilSingleton(){}public static MutilSingleton getInstance(){//獲取隨意一個MutilSingleton實例Random ran = new Random();Integer index = ran.nextInt(maxNum);return list.get(index);}public void doSomething(){//邏輯處理}} 同樣地:該實例在并發(fā)情況下會出現(xiàn)線程不安全的問題,解決方法依然是在獲取MutilSingleton實例的方法上添加synchronized關(guān)鍵字。

4.工廠模式下的單例模式

// 單例類public class Singleton{private Singleton(){}}//工廠類public class SingletonFacotry{private static Singleton singleton;static{//在類加載的時候初始化單例類,只會被加載一次。try{Class cls = Class.forName(singleton.getClass().getName());  //獲得單例類的類加載器Constructor   con =  cls.getDeclaredConstructor();con.setAccessible(true);singleton = (Singleton) con.newInstance();}catch(Exception e){e.printStackTrace();}}public Singleton getInstance(){//給外部提供獲取單例類的方法return singleton;}}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 池州市| 蓝田县| 金寨县| 吴江市| 民县| 延吉市| 弋阳县| 乐平市| 林州市| 遂昌县| 合江县| 阜平县| 嵩明县| 珠海市| 弋阳县| 哈密市| 长宁区| 巴林右旗| 巴里| 沁源县| 平谷区| 青岛市| 广河县| 合山市| 治多县| 汝州市| 义乌市| 义马市| 尉犁县| 肃宁县| 扶绥县| 平罗县| 苗栗市| 崇明县| 广水市| 莲花县| 徐闻县| 九龙县| 策勒县| 宁南县| 德化县|