設計模式十五 享元模式

2021-09-09 08:20:13 字數 966 閱讀 8738

享元模式定義:運用共享技術有效地支援大量細粒度地物件。

初步理解:**的共享,不同的使用者使用時,存在不同的資料,因此在呼叫方法時傳入封裝使用者資訊的物件即可。

code…

每件體育用品的功能是相同的,因此體育用品是共享的,但是使用體育用品的人是不一樣的。 體育用品的基類:

public inte***ce sharesport
桌球的實現類:

public class pingpang implements sharesport 

}

其他兩個實現類與此類似。

工廠類,如果有某件體育用品,直接將其返回,如果沒有這件,通過反射新建乙個然後新增到hashmap中然後返回。

public class factory  catch (classnotfoundexception e)  catch (instantiationexception e)  catch (illegalacces***ception e) 

hashmap.put(string, obj);

}return hashmap.get(string);

}

使用者類:

public class user
main方法:

public class main 

}

在這個例項中,user可以看做是外部狀態,運動器材可以看做是內部狀態。內部狀態是可以共享的。在設計中,如果發現有很多物件除了少數引數不一樣其餘都相同的時候,可以將少數引數分離到類外,相同的部分拿來共享。當呼叫方法時,再將引數傳入。

比如上例:沒有必要人手一把桌球,可以買上幾分大家共享,需要打籃球發現沒有時,再去買。不管是誰打桌球,桌球的作用都是被打。要體現出打的人不同,就要在呼叫方法是將使用者傳入。

---the end---

設計模式之十五 享元模式

享元模式 運用共享技術有效地支援大量細粒度的物件。享元模式和單例模式類似的地方。共通的思路,就是同一類物件之建立乙個例項,享元模式在此基礎上進一步加工。利用工廠模式來返回需要的物件。from abc import abcmeta,abstractmethod class website metacl...

設計模式(享元模式)

享元模式是設計模式中少數幾個已提高系統效能為目的模式之一。它的核心思想是 如果系統存在多個 相同的物件,那麼只需要共享一分物件的拷貝,而不必為每一次使用都建立新的物件。當有物件被大量復用時,特別是重量級的物件復用可以使用享元模式來提高系統效能。其優點如下 1.可以節省重複建立物件的開銷,因為被享元模...

設計模式 享元模式

享元模式flyweight flyweight 模式是乙個提高程式效率和效能的模式 會大大加快程式的執行速度。把物件中使用比較多,具有共同點的,拿出來做成乙個共享類,這樣就行成了共享模式。如 integer 物件在 128 127 使用的是同乙個物件。在這之間是共享的。享元中的角色 flyweigh...