但是每種方式只會有乙個物件, 可以由多個使用者使用。
abstract class website
其中,使用者類:
data class flyweightuser (
val name:string
)
import android.util.log
class weibowebsite: website()
override fun use(user: flyweightuser) 使用中....")
}}
import android.util.log
class newswebsite : website()
override fun use(user: flyweightuser) 使用中....")
}}
import android.util.log
class weixinwebsite: website()
override fun use(user: flyweightuser)
}
object websitefactory
fun getwebsite(tag: string): website? ?.also
}return map[tag]
}fun getsize(): int
}
@test
fun testflyweight()")
var tom = flyweightuser("tom")
var petter = flyweightuser("petter")
var jame = flyweightuser("jame")
var putty = flyweightuser("putty")
websitefactory.getwebsite("weibo")?.use(tom)
log.d(tag, "current map size = $")
websitefactory.getwebsite("weibo")?.use(petter)
log.d(tag, "current map size = $")
websitefactory.getwebsite("weixin")?.use(jame)
log.d(tag, "current map size = $")
websitefactory.getwebsite("news")?.use(putty)
log.d(tag, "current map size = $")
websitefactory.getwebsite("weixin")?.use(tom)
log.d(tag, "current map size = $")
websitefactory.getwebsite("news")?.use(jame)
log.d(tag, "current map size = $")
}
10-27 15:24:22.512 d designpattern: ********************flyweight********************
10-27 15:24:22.513 d designpattern: start map size = 0
10-27 15:24:22.513 d weibowebsite: 微博 tom使用中....
10-27 15:24:22.513 d designpattern: current map size = 1
10-27 15:24:22.513 d weibowebsite: 微博 petter使用中....
10-27 15:24:22.514 d designpattern: current map size = 1
10-27 15:24:22.514 d designpattern: current map size = 2
10-27 15:24:22.514 d newswebsite: 新聞 putty使用中....
10-27 15:24:22.514 d designpattern: current map size = 3
10-27 15:24:22.514 d designpattern: current map size = 3
10-27 15:24:22.514 d newswebsite: 新聞 jame使用中....
10-27 15:24:22.514 d designpattern: current map size = 3
可以看出方式物件最多只有三種,無論有多少個使用者,使用多少次 設計模式學習筆記 享元模式
享元模式英文叫flyweight pattern。flyweight,應該是乙個來自於拳擊術語,最輕量級,也叫蠅量級。次奧,我看 大話設計模式 這本書的時候,一直錯看成 亨元模式,搞不懂為什麼叫這個名字。現在看清楚了,是享元,共享的享,就比較好理解了。享元模式,就是共享 重用一些現成的物件,免得構造...
js設計模式筆記 享元模式
剛接觸享元的模式的時候其工作機制可能很難理解。我們先對其結構作一概覽,然後再詳細講解各個部分。享元模式用於減少應用程式所需要的物件的數量。這是通過將物件的內部狀態劃分為記憶體資料和外在資料兩類而實現的。內在資料是指類的內部方法所需要的資訊,沒有這種資料的話類就不能正常運轉。外在資料則是可以從類身上剝...
《大話設計模式 享元模式》筆記
1 享元模式 flyweight 運用共享技術有效的支援大量細顆粒度的物件。2 享元模式結構圖 3 簡單 實現 flyweight類,它是所有享元類的超類或介面,通過這個介面,flyweight可以接受並作用於外部狀態。public abstract class flyweightconcretef...