设计模式七:单例模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式七:单例模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?單例模式:
? ? ? 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。?
? ? ? 采取一定的方法保證在整個(gè)的軟件系統(tǒng)中,對某個(gè)類只能存在一個(gè)對象實(shí)例,并且該類只提供一個(gè)取得其對象實(shí)例的方法(靜態(tài)方法)
?單例模式的八種方式
? ?1).餓漢式(靜態(tài)常量)
? ?2).餓漢式(靜態(tài)代碼塊)
? ?3).懶漢式(線程不安全)
? ?4).懶漢式(線程安全,同步方法)
? ?5).懶漢式(線程安全,同步代碼塊)
? ?6).雙重檢查
? ?7).靜態(tài)內(nèi)部類
? ?8).枚舉?
? 1. 懶漢式單例
package com.China.singleton.example1;/*** 懶漢式單例*/ public class Singleton {// 定義一個(gè)變量,存儲創(chuàng)建好的類實(shí)例private static Singleton uniqueInstance = null;// 私有化構(gòu)造方法private Singleton(){}// 為客戶端提供類實(shí)例public static synchronized Singleton getInstance(){if(uniqueInstance == null){uniqueInstance = new Singleton();}return uniqueInstance;}public void singletonOperation(){// 功能處理}/*** 單例可以擁有自己的屬性*/private String singletonData;/*** 讓外部通過這些方法來訪問屬性的值*/public String getSingletonData(){return singletonData;} }?2. 餓漢式單例
package com.China.singleton.example2;/*** 餓漢式單例*/ public class Singleton {// 直接創(chuàng)建類實(shí)例,只會創(chuàng)建一次private static Singleton uniqueInstance = new Singleton();private Singleton(){}public static Singleton getInstance(){return uniqueInstance;}public void singletonOperation(){// 功能處理}/*** 單例可以擁有自己的屬性*/private String singletonData;/*** 讓外部通過這些方法來訪問屬性的值*/public String getSingletonData(){return singletonData;} }?
?如何獲取緩存基本思路
package com.China.singleton.example5;import java.util.HashMap; import java.util.Map;public class JavaCache {/*** 緩存數(shù)據(jù)的容器*/private Map<String, Object> map = new HashMap<String, Object>();public Object getValue(String key){// 先從緩存中取值Object obj = map.get(key);// 判斷緩存里面是否有值if(null == obj){obj = key+",value";map.put(key, obj);} return obj;}// 1.定義一個(gè)存放緩存數(shù)據(jù)的容器// 2. 從緩存中獲取數(shù)據(jù)的做法// 2.1 先從緩存里面取值// 2.2 判斷緩存里面是否有值// 2.3 如果有值,就直接使用這個(gè)值// 2.4 如果沒有,那么就去獲取相應(yīng)的數(shù)據(jù),或者是創(chuàng)建相應(yīng)的對象. 并且要把獲取的數(shù)據(jù)放到緩存中 }?
總結(jié)
以上是生活随笔為你收集整理的设计模式七:单例模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式六:适配器模式
- 下一篇: oracle中把函数的执行权限赋个某个用