Flyweight模式之我見
今天看了板橋里人的《設計模式之Flyweight(享元) FlyWeight模式
》一文,發現其中的理解有些偏差,因此在這裡談一談自己的看法。
Flyweight的目的是為了減少記憶體的消耗而出現的一種模式。因此他是一種解決實現問題的模式,而不是用來解決建模問題的。
在文章的例子中說class CD是介面 Flyweight,而class Artist是ConcreteFlyweight。那就完全錯了。
按照Flyweight模式,Flyweight和ConcreteFlyweight是繼承關係。
而文中卻成了聚合關係。
Flyweight模式中,最重要的是將物件分解成extrinsic和intrinsic兩部分
在Flyweight Interface中,應該是和context有關的操作,而在例子中,看不到任何和context有關的操作。
可見作者是將flyweight模式和object pool等同起來了。但實際上兩者是由本質區別的。object pool中的物件並沒有extrinsic,也不知道context的存在。比如最常見的string pool。pool中的string可以用在任何地方。
希望板橋里人先生本著對讀者負責的精神,能夠修改上文。
以上。
》一文,發現其中的理解有些偏差,因此在這裡談一談自己的看法。
Flyweight的目的是為了減少記憶體的消耗而出現的一種模式。因此他是一種解決實現問題的模式,而不是用來解決建模問題的。
在文章的例子中說class CD是介面 Flyweight,而class Artist是ConcreteFlyweight。那就完全錯了。
按照Flyweight模式,Flyweight和ConcreteFlyweight是繼承關係。
而文中卻成了聚合關係。
Flyweight模式中,最重要的是將物件分解成extrinsic和intrinsic兩部分
在Flyweight Interface中,應該是和context有關的操作,而在例子中,看不到任何和context有關的操作。
可見作者是將flyweight模式和object pool等同起來了。但實際上兩者是由本質區別的。object pool中的物件並沒有extrinsic,也不知道context的存在。比如最常見的string pool。pool中的string可以用在任何地方。
希望板橋里人先生本著對讀者負責的精神,能夠修改上文。
以上。
[該貼被oxygen於2007年05月28日 19:40修改過]
相關文章
- 享元模式(Flyweight)模式
- 【大道模式】享元模式-FlyWeight Pattern模式
- Spring框架之我見(二)——代理模式Spring框架模式
- 研磨設計模式 之 享元模式(Flyweight)1——跟著cc學設計系列設計模式
- 設計模式--享元模式FlyWeight(結構型)設計模式
- C#設計模式系列:享元模式(Flyweight)C#設計模式
- Angular 之我見Angular
- Rust語言之GoF設計模式:Flyweight享元模式RustGo設計模式
- [2]動機、原則與模式——OO設計之我見模式
- observer pattern 之我見Server
- Tomcat的連線池算是Flyweight模式嗎?Tomcat模式
- 瀏覽器之我見瀏覽器
- database buffer cache之我見Database
- 關於FlyWeight模式設計的一個問題模式
- 我學設計模式 之 代理模式設計模式
- 我學設計模式 之 策略模式設計模式
- 我學設計模式 之 命令模式設計模式
- 我學設計模式 之 中介模式設計模式
- 我學設計模式 之 模板模式設計模式
- 我學設計模式 之 合成模式設計模式
- 綠色IT之我見[我寫綠色IT]薦
- 資料架構之我見架構
- android:minSdkVersion 之我見Android
- IT職業規劃之我見
- 遊戲開發之我見遊戲開發
- 移動開發之我見移動開發
- 遊戲製作之我見:) (轉)遊戲
- 專案管理之我見 (轉)專案管理
- Golang 常見設計模式之選項模式Golang設計模式
- Golang 常見設計模式之裝飾模式Golang設計模式
- Golang 常見設計模式之單例模式Golang設計模式單例
- 我學設計模式 之 單例模式設計模式單例
- 我學設計模式 之 門面模式設計模式
- 我學設計模式 之 橋接模式設計模式橋接
- 我學設計模式 之 狀態模式設計模式
- 我學設計模式 之 建造模式設計模式
- 我學設計模式 之 享元模式設計模式
- 我學設計模式 之 備忘模式設計模式