享元模式與單例模式區別

2021-07-14 12:14:32 字數 880 閱讀 4007

單例模式是類級別的,乙個類只能有乙個物件例項;

享元模式是物件級別的,可以有多個物件例項,多個變數引用同乙個物件例項;

享元模式主要是為了節約記憶體空間,提高系統效能,而單例模式主要為了可以共享資料;

1:單例模式

public class singleton

public static synchronized singleton getsingleton()

return singleton;

}public static void main(string args) }

2:享元模式

//享元模式是多個變數公用乙個物件例項  大大節約了記憶體空間  提高了系統效能  string類是final型別 就是使用了享元模式

//資料庫連線池 執行緒池也是享元模式的應用

public abstract class flyweight

//具體類 享元實現類

public class createflyweight extends flyweight

@override

public void operation()

public static void main(string args) }

//工廠方法類 維護乙個物件儲存池 享元工廠類

public class flyweightfactory ;

public flyweight getflyweight(object obj)

return flyweight;

}public int getflyweightsize()

public static void main(string args)

}

設計模式之享元模式,單例模式

單例模式 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。結構圖 注意多執行緒的單例。享元模式 享元的英文是flyweight,它是乙個來自於體育方面的專業用語,在拳擊 摔跤和舉重比賽中特指最輕量的級別。把這個單詞移植到軟體工程裡面,也是用來表示特別小的物件,即細粒度物件。flyweight...

單例模式,原型模式,享元模式

這三個模式為什麼放一起呢。都是減少建構函式多次被構造為目的產生的模式。也就是說 a a new a a b new a 這樣就兩次構造了這個物件 單例模式 在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 有乙個廚師 class c...

語言與模式 12享元模式

運用共享技術有效地支援大量細粒度的物件。抽象享元角色類 public inte ce flyweight public class concreteflyweight implements flyweight 外蘊狀態作為引數傳入方法中,改變方法的行為,但是並不改變物件的內蘊狀態。override ...