Cách tiếp cận tốt nhất khi thiết kế các lớp học sau đây áp dụng các mẫu thiết kế là gì?Thiết kế OOP cho các lớp trò chơi thẻ
- sàn-addCard, thỏa thuận, shuffle, getTopCard, removeTopCard, removeAllCards
- tay-addCard, removeCard, getCard, removeAllCards
- DiscardPile-addCard, getTopCard , removeTopCard, removeAllCards
- MeldPile-addCard, removeAllCards
(Các MeldPile giữ tất cả các melds trong bảng.)
Đối với tôi, tôi nghĩ rằng getTopCard
và removeTopCard
chỉ là một wrapper của getCard
và removeCard
, như nó chỉ nhận được vị trí hàng đầu của một thẻ sau đó chuyển nó đến getCard
hoặc removeCard
.
Tôi có nên sử dụng bố cục không? mô hình chiến lược? hoặc chỉ cần tạo một lớp khác có tên là CardPile và sử dụng nó làm lớp cơ sở của lớp trên? Thực sự đánh giá cao nếu bạn có thể cung cấp một mã mẫu về điều này.
Cách tiếp cận tốt nhất là bắt đầu viết quy tắc trò chơi và để thiết kế của bạn phát triển tự nhiên. Nếu bạn có câu hỏi cụ thể, ví dụ: 'Tôi đang cố gắng thực thi quy tắc nếu người chơi chơi bài mà người chơi khác phải loại bỏ, tôi nên sử dụng mẫu nào ở đây?' điều đó có thể trả lời được. –
+1 cho "để thiết kế của bạn phát triển tự nhiên" – radarbob
Hãy coi chừng việc phân tán các lớp "tự nhiên xảy ra" thành các lớp cơ sở hạt nguyên tử phụ. Phân cấp lớp có thể nhận được quá sâu với quá trình xử lý chung và không cần thiết đang diễn ra. Bạn luôn có thể cấu trúc lại sau này nếu * tiến trình thiết kế tự nhiên của bạn * gọi cho một cơ sở tổng quát hơn từ đó để lấy được chức năng mới. – radarbob