此篇中主要练习享元模式,具体可以看(http://www.runoob.com/design-pattern/flyweight-pattern.html)
package main import ( "fmt" "math/rand" ) func main() { color := [...]string{"Red", "Green", "Blue", "White", "Black"} for i := 0; i < 20; i++ { cir := ShapeFactory2{m: make(map[string]Shape2)}.getCitlce(color[rand.Intn(len(color))]).(Circle2) cir.x = rand.Intn(100) cir.y = rand.Intn(100) cir.radius = rand.Intn(100) cir.draw2() } } type Shape2 interface { draw2() } type Circle2 struct { color string x int y int radius int } func (cc Circle2) draw2() { fmt.Println(cc) } type ShapeFactory2 struct { m map[string]Shape2 } func (sf ShapeFactory2) getCitlce(color string) Shape2 { c := sf.m[color] if c == nil { c = Circle2{color: color} sf.m[color] = c fmt.Println("Creating circle of color : ", color) } return c }