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

首頁 > 編程 > Java > 正文

java中幾種常用的設計模式及其實現

2019-11-06 06:24:04
字體:
來源:轉載
供稿:網友

一、單例模式

1、什么是單例模式

采用單例模式創建的類,無論程序如何運行,只會有一個實例會對象產生。

2、如何實現單例模式

把握三個原則:
(1)構造方法私有化。
(2)類內部需自己實例化對象。
(3)提供公有的方法返回該實例化對象。
外部想要拿到該類的實例化對象則必須通過該公有方法的返回(實際上,java可以通過反射機制是能夠實例化構造方法是私有化的類的,這會導致所有模式的單例模式失效,這里暫不做討論)。

(1)餓漢模式

//餓漢式單例類.在類初始化時,已經自行實例化   public class Singleton1 {      PRivate Singleton1() {}      private static final Singleton1 single = new Singleton1();      //靜態工廠方法       public static Singleton1 getInstance() {          return single;      }  } 餓漢模式,即在類創建的同時就把該類實例化了,這可能會導致資源浪費,因為有可能不會用到該類的實例化對象,但是該模式是線程安全的。

(2)懶漢模式

//懶漢式單例類.在第一次調用的時候實例化自己   public class Singleton {      private Singleton() {}      private static Singleton single=null;      //靜態工廠方法       public static Singleton getInstance() {           if (single == null) {                 single = new Singleton();           }            return single;      }  } 懶漢模式,是在第一次調用返回實例化對象的公有方法的時候才會去創建,但這不是線程安全的,因為有可能兩個線程同時調用該方法。

可以在方法上加鎖(synchronized):

public static synchronized Singleton getInstance() {           if (single == null) {                 single = new Singleton();           }            return single;  } 或者:

    public static Singleton getInstance() {              if (singleton == null) {                    synchronized (Singleton.class) {                       if (singleton == null) {                          singleton = new Singleton();                      }                    }                }                return singleton;           }  只在實例化對象為空時才會進入同步,效率稍微比在方法外面加同步修飾高一點。但是這樣同樣會造成一定資源的浪費,因為大多數情況下并不會出現線程安全問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 增城市| 九寨沟县| 格尔木市| 城口县| 万全县| 玛曲县| 蓬莱市| 永顺县| 宝丰县| 内乡县| 大安市| 名山县| 布尔津县| 屏南县| 洮南市| 湟源县| 霍山县| 建德市| 天柱县| 鹤山市| 滦南县| 新余市| 岑溪市| 香港 | 资讯 | 鄂尔多斯市| 浦江县| 巢湖市| 永春县| 确山县| 长沙县| 扎兰屯市| 深泽县| 陇西县| 石首市| 墨竹工卡县| 水城县| 天柱县| 江永县| 绥宁县| 克山县|