享元模式-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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值