对于大学作业,我必须为 Bid Tracker 实现一个接口。出价跟踪器的一些简单功能是:
- 记录用户对项目的出价
- 获取项目的所有出价
- 获取用户出价的所有项目
这不应该有 GUI 或 DB 持久性。
我创建了一个类和接口,如下所示,我的解决方案基于两个保存数据的哈希表。我的问题是,有没有比使用两个哈希表更好的设计?这个设计还可以吗?
BidTrackerImpl
public class BidTrackerImpl implements BidTracker {
ItemDAO itemDAO = new ItemDAOImpl();
public void addBid(Bid bid, int itemId) throws ... {
Item item = itemDAO.getItemById(itemId);
item.addBid(bid);
}
public List<Bid> getAllBids(int itemId) {
...
}
public Set<Item> getAllItems(int userId) {
...
}
DAO 使用两个哈希表来存储数据,因此我可以通过任一键访问(我使用锁来确保 DAO 方法中的线程安全)。
public class ItemDAOImpl implements ItemDAO {
Hashtable<Integer, Item> itemsByItemId = new Hashtable<>();
Hashtable<Integer, Set<Item>> itemsByUserId = new Hashtable<>();
...
@Override
public Item getItemById(int itemId) {
...