From
卡码网
Status
回头复习下
Date
Apr 3, 2024
Tags
设计
单例模式
Difficulty
中等
题面
题目描述
小明去了一家大型商场,拿到了一个购物车,并开始购物。请你设计一个购物车管理器,记录商品添加到购物车的信息(商品名称和购买数量),并在购买结束后打印出商品清单。(在整个购物过程中,小明只有一个购物车实例存在)。
输入描述
输入包含若干行,每行包含两部分信息,分别是商品名称和购买数量。商品名称和购买数量之间用空格隔开。
输出描述
输出包含小明购物车中的所有商品及其购买数量。每行输出一种商品的信息,格式为 "商品名称 购买数量"。
输入示例
Apple 3
Banana 2
Orange 5
输出示例
Apple 3
Banana 2
Orange 5
提示信息
本道题目请使用单例设计模式:
使用私有静态变量来保存购物车实例。
使用私有构造函数防止外部直接实例化。
思路
题解
LinkedHashMap
实例被用作购物车的实际存储结构,而 Map
接口被用作变量的类型声明。这种做法是为了提高代码的灵活性和可维护性。通过将
cart
变量声明为 Map<String, Integer>
类型,而不是具体的 LinkedHashMap<String, Integer>
类型,可以使代码更具通用性。这样,如果以后需要更改购物车的实现,例如从 LinkedHashMap
切换到 HashMap
或其他实现,只需更改 ShoppingCartManager
类的构造函数即可,而不需要修改其他部分的代码。