对于大学作业,我必须为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) {
...