1.採用共享的方法來降低系統中細粒度對象的個數,從而降低內存消耗。
2.享元對象
內蘊狀態(Internal State):存儲在享元對象內部不隨環境而改變,可以共享,使對象相對於內蘊狀態在整個系統中是唯一的;
外蘊狀態(External State):在客戶端保存會隨環境而改變,需要在使用的時候傳入到對象的內部;
2種狀態是相互獨立的。
3.軟件對象不依賴於對象的身份,這些對象是不可分辨的。
4.抽象享元角色(flyweight)
具體享元角色(concreteflyweight)
享元工廠角色(flyweightfactory):將享元對象用工廠方法封裝起來,這個工廠必須是單件的,享元類可以被實例化而單件類則不可以。
客戶端角色(client)
這裏的角色就是類。
5.缺點
程序的邏輯複雜化,享元對象的狀態外部化使系統運行時間稍微變長。
6.在實際開發中並不常用。
7.在.net中運用
string類型,創建2個同樣的字符串(字符串內容相同)對象在內存中的位置(引用)相同,這個相同的字符串就是2個字符串對象的“享元”。