大学の課題のために、Bid Tracker のインターフェースを実装する必要があります。入札トラッカーの簡単な機能は次のとおりです。
- アイテムに対するユーザーの入札を記録する
- アイテムのすべての入札を取得する
- ユーザーが入札したすべてのアイテムを取得する
これには、GUI または DB の永続性があってはなりません。
以下のようにクラスとインターフェースを作成しました。私のソリューションは、データを保持する 2 つのハッシュテーブルに基づいています。私の質問は、2 つのハッシュ テーブルを使用するよりも優れた設計はありますか? また、このデザインは大丈夫ですか?
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 は 2 つのハッシュ テーブルを使用してデータを格納するため、どちらのキーでもアクセスできます (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) {
...