GO設計模式 結構型 享元模式

2021-10-11 18:43:06 字數 800 閱讀 5545

享元模式就是將大量物件共有的部分抽取出來,供這些物件共享使用。而這些元素不同的部分,會以引數的形式注入具體享元的相關方法中。

ps:其實感覺有點像sync.pool,本質都是快取共享物件,降低記憶體消耗和減輕gc壓力,但是仔細看下來還是和sync.pool有點區別的

快取共享物件,降低記憶體消耗

在遊戲業務開發的場景中,建立大量相同或相似物件例項的問題

例如,遊戲業務中的圍棋和五子棋中的黑白棋子

//people介面

type people inte***ce

//共有的資訊

type student struct

//不同的資訊

type peopleinfo struct

func newstudent(id string) *student

}func (p *student) printinfo(info peopleinfo)

//享元工廠

type peoplefactory struct

//建立工廠時需要建立可以存入大量的people例項的map

func newpeoplefactory() *peoplefactory

}//獲得例項

func (p *peoplefactory) getpeople(id string) people else

return people

}//測試享元模式

func testflyweight() )

}}

設計模式 結構型 享元模式

如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時就應該考慮使用 還有物件的大多數狀態可以外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件。public class flyweighttest class flyweightfactory publi...

設計模式 結構型之享元模式

如果乙個類的大量例項的部分屬性都相同,就把這些屬性抽離成新類,這樣的類結構叫享元模式 享元模式就是不同例項的成員變數共享同乙個例項,降低記憶體占用 但是由於享元模式快取的物件不會被jvm 除非驗證過有效能提公升,否則不要濫用 享元模式由3部分組成 享元類 public class flyweight...

結構型設計模式 享元模式詳解

享元模式 flyweight pattern 也叫蠅量模式,運用共享技術有效地支援大量細粒度物件的復用。常用於系統底層開發,解決系統效能問題。例如資料庫連線池,裡面都是建立好的連線物件,如果有我們需要的,直接拿來用,避免重新建立,可以解決重複物件對記憶體造成浪費的問題。享元模式提出了細粒度和共享物件...