更新各个设计模式示例,添加工厂方法、原型和单例模式的实现,重构相关代码并增强可读性
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
/*
|
||||
实例
|
||||
汤宝宝混穿到了泰拉世界,并成为了泰拉联邦的唯一统治者。人类只有一个帝皇!
|
||||
*/
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// 帝皇类
|
||||
type Emperor struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
var emperorInstance *Emperor
|
||||
var once sync.Once
|
||||
|
||||
// 获取帝皇实例的函数
|
||||
func GetEmperorInstance(name string, announce string) *Emperor {
|
||||
fmt.Println(announce)
|
||||
once.Do(func() {
|
||||
emperorInstance = &Emperor{Name: name}
|
||||
})
|
||||
return emperorInstance
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
fmt.Println("========= 单例模式 =========")
|
||||
|
||||
// 获取帝皇实例
|
||||
emperor1 := GetEmperorInstance("汤宝宝", "泰拉联邦的帝皇诞生了!")
|
||||
fmt.Printf("帝皇的名字是:%s!\n", emperor1.Name)
|
||||
emperor2 := GetEmperorInstance("王二狗", "泰拉联邦的帝皇又一次诞生了!")
|
||||
fmt.Printf("帝皇的名字是:%s!\n", emperor2.Name)
|
||||
if emperor1 == emperor2 {
|
||||
fmt.Printf("泰拉只有一个帝皇:%s!\n\n", emperor1.Name)
|
||||
}
|
||||
|
||||
fmt.Println("======= 单例模式结束 =======")
|
||||
}
|
||||
Reference in New Issue
Block a user