【常见的设计模式】单例模式

参考:【设计模式专题之单例模式】1.小明的购物车

【设计模式专题之单例模式】
1.小明的购物车 时间限制:1.000S 空间限制:256MB

题目描述
小明去了一家大型商场,拿到了一个购物车,并开始购物。请你设计一个购物车管理器,记录商品添加到购物车的信息(商品名称和购买数量),并在购买结束后打印出商品清单。(在整个购物过程中,小明只有一个购物车实例存在)。

输入描述
输入包含若干行,每行包含两部分信息,分别是商品名称和购买数量。商品名称和购买数量之间用空格隔开。

输出描述
输出包含小明购物车中的所有商品及其购买数量。每行输出一种商品的信息,格式为 “商品名称 购买数量”。

输入示例
Apple 3 Banana 2 Orange 5

输出示例
Apple 3 Banana 2 Orange 5

提示信息

  • 本道题目请使用单例设计模式
  • 使用私有静态变量来保存购物车实例
  • 使用私有构造函数防止外部直接实例化

思路:

  • 单例实现,借助Golang中的 sync.Once 包 和 全局变量 实现
  • 先实现几个必要结构实例方法,结构体 如:商品信息、购物车信息;实例 如:购物车实例;方法 如:SetGet方法。

注意:

  • Set方法,需要修改接收器指向的购物车中的商品信息,因此需要使用指针接收器
  • Get方法,需要读取购物车中的商品信息,无需修改,所以可以使用接收器。这样在调用Get方法时,会创建接收器的副本,而不会影响原始购物车实例。
  • main方法,外部自定义格式的输入方式,应由外部处理,而不应放入Set方法中处理,避免Set方法因外部输入格式变动而频繁改动

Golang版本代码:

package main

import (
"fmt"
"sync"<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值