《JAVA與模式》第12天—享元模式=單例模式+工廠模式+合成模式 – JAVA編程語言程序開發技術文章

享元模式=單例模式+工廠模式+合成模式
 

單例模式:

保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

結構圖:

 

註意多線程的單例。

[java] 
package com.bankht.Flyweight.complex; 
 
/**
 * @author: 特種兵—AK47
 * @創建時間:2012-6-26 下午03:25:14
 * 
 * @類說明 :單例
 */ 
public class Singleton { 
    private static Singleton instance; 
    private static final Object syncRoot = new Object(); 
 
    private Singleton() { 
 
    } 
 
    public static Singleton getInstance() { 
        if (instance == null) { 
            synchronized (syncRoot) { 
                instance = new Singleton(); 
            } 
        } 
        return instance; 
    } 

package com.bankht.Flyweight.complex;

/**
 * @author: 特種兵—AK47
 * @創建時間:2012-6-26 下午03:25:14
 *
 * @類說明 :單例
 */
public class Singleton {
 private static Singleton instance;
 private static final Object syncRoot = new Object();

 private Singleton() {

 }

 public static Singleton getInstance() {
  if (instance == null) {
   synchronized (syncRoot) {
    instance = new Singleton();
   }
  }
  return instance;
 }
}
 

 

享元模式:

 

享元的英文是Flyweight,它是一個來自於體育方面的專業用語,在拳擊、摔跤和舉重比賽中特指最輕量的級別。把這個單詞移植到軟件工程裡面,也是用來表示特別小的對象,即細粒度對象。Flyweight享元,可以理解為共享元對象,也就是共享細粒度對象。享元模式就是通過使用共享的方式,達到高效地支持大量的細粒度對象。它的目的就是節省占用的空間資源,從而實現系統性能得到改善。

享元模式主要作用是實現對象的共享,即使用共享池,從而減少內存分配的開銷。享元模式通常與工廠模式一起使用,它包含瞭多個共享的組合對象,因此:享元模式=單例模式+工廠模式+合成模式,其結構如圖12-25所示

 

其中:FlyweightFactoiy享元工廠負責創建和管理享元對象,它必須保證享元對象可以被系統適當共享。當一個客戶端對象請求一個享元對象的時候,享元工廠需要檢查系統中是否已經有一個符合要求的享元對象,如果已經有瞭,享元工廠就應當提供這個已有的享元對象;如果系統中沒有一個適當的享元對象的話,享元工廠就應當創建一個新的合適的享元對象。Flyweight是所有的具體享元類的超類,為這些類規定出需要實現的公共接口或抽象類。MyFlyweight1和MyFlyweight2則是實現抽象享元所規定的接口。

 
作者:m13666368773
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。