单例模式 — 设计模式

单例模式(Singleton Pattern) 是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这个模式在多种编程语言和框架中都有广泛应用,特别是在需要控制资源访问或实现全局状态管理的场景中。

单例模式---题目链接

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
	"sync"
)

type ShopCarManager struct {
	item_map map[string]int
}

func (s *ShopCarManager) AddItemToCar(itemName string, count int) {
	if _, ok := s.item_map[itemName]; !ok {
		s.item_map[itemName] = count
	} else {
		s.item_map[itemName] += count
	}
}

func (s *ShopCarManager) PrintAllItemInfo() {
	for k := range s.item_map {
		fmt.Println(k, s.item_map[k])
	}
}

var once sync.Once
var shopCarInstance *ShopCarManager

func GetShowCarInstance() *ShopCarManager {
	once.Do(func() {
		shopCarInstance = &ShopCarManager{make(map[string]int)}
	})
	return shopCarInstance
}

func main() {
	var shop_instance = GetShowCarInstance()
	var reader = bufio.NewScanner(os.Stdin)
	for reader.Scan() {
		if reader.Text() == "" {
			break
		}
		var str = reader.Text()
		var item_info = strings.Split(str, " ")
		var count, _ = strconv.Atoi(item_info[1])
		shop_instance.AddItemToCar(item_info[0], count)
	}
	shop_instance.PrintAllItemInfo()
}
相关推荐
kk哥889914 小时前
如何快速掌握JavaSE的核心语法?
java
我是一只小青蛙88814 小时前
AVL树:平衡二叉搜索树原理与C++实战
java·jvm·面试
浩瀚地学15 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
XXOOXRT16 小时前
基于SpringBoot的加法计算器
java·spring boot·后端·html5
阿崽meitoufa16 小时前
JVM虚拟机:垃圾收集器和判断对象是否存活的算法
java·jvm·算法
YounGp_oo16 小时前
使用 AI 编程工具的一点实践体会:为什么要减少对话轮次、一次把需求说清楚
软件工程·需求分析·开发经验·工程实践·ai 编程
我是苏苏16 小时前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
moxiaoran575317 小时前
Go语言的错误处理
开发语言·后端·golang
一条闲鱼_mytube17 小时前
智能体设计模式(三)多智能体协作-记忆管理-学习与适应
人工智能·学习·设计模式