将可共用的物件共用以节省空间
设计一个扑克牌游戏,如果牌局在运行,每创建一个牌局就需要建立新的卡牌,这样会很浪费记忆体,需要有方法解决此问题。
(相关的 code 在Github - go-design-patterns)
设计一个可共用的物件pockerCards{}
,里头有着所有扑克牌,在用NewPockerGame()
开启每场牌局时,程序会设定卡牌的来源都来自pockerCards{}
package main
import "fmt"
var pockerCards = map[int]*Card{
1: {
Name: "A",
Color: "红",
},
2: {
Name: "A",
Color: "黑",
},
// 其他卡牌
}
type Card struct {
Name string
Color string
}
type PockerGame struct {
Cards map[int]*Card
}
func NewPockerGame() *PockerGame {
board := &PockerGame{Cards: map[int]*Card{}}
for id := range pockerCards {
board.Cards[id] = pockerCards[id]
}
return board
}
func main() {
game1 := NewPockerGame()
game2 := NewPockerGame()
fmt.Println(game1.Cards[1] == game2.Cards[1])
}
两者都有共用的概念,但有些许差异:
工业控制系统常见名词 基础名词 ICS Industry Control System 工业控制系...
今天介绍position中的四个属性:static、relative、absolute、fixed ...
攻击者可以使用session hijacking来发起各种攻击,例如中间人(MITM)攻击。 在MI...
前言 Hi!我是SingYo,谢谢你点进来看这个系列! 这是我第一次参加铁人赛。 其实说30个前端「...
前言 上一篇介绍了何谓FLUX & MONO,本篇就来说明具体的使用方式。 Just 最简单...