享元模式-golang

此篇中主要练习享元模式,具体可以看(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
}

发布了48 篇原创文章 · 获赞 17 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/aixinaxc/article/details/79328505