Giả sử tôi đang triển khai phiên bản Scrabble của riêng mình. Tôi hiện có một lớp học Board
chứa rất nhiều Squares
. Lần lượt, Square
bao gồm IBonus
và Piece
. Việc thực hiện tiền thưởng thực sự là tiền thưởng bình thường cho Scrabble, nhưng có thể là tôi có thể thử thêm một số tiền thưởng mới và xoắn để gia vị trò chơi - tính linh hoạt ở đây là tối thượng!Thiết kế hệ thống tiền thưởng linh hoạt và có thể mở rộng để thực hiện trò chơi của Scrabble
Sau khi suy nghĩ một thời gian tôi đi đến kết luận rằng cho IBonus
triển khai để làm việc, họ sẽ cần phải biết toàn bộ Board
và cũng vị trí hiện tại của nó (trên Board
, vì vậy nó biết nơi nó là và nó có thể kiểm tra các mảnh đó là trong cùng một hình vuông như tiền thưởng là). Điều này đánh tôi tồi tệ như về cơ bản nó cần phải biết rất nhiều thông tin.
Vì vậy, triển khai ngây thơ của tôi sẽ vượt qua đối số Board
làm phương pháp IBonus.calculate()
, IBonus.calculate(Board board, Point position)
, tức là.
Ngoài ra, có vẻ như tạo tham chiếu vòng tròn. Hoặc là tôi sai?
Tôi không giống như phương pháp này, vì vậy tôi đang tìm các cách tiếp cận có thể có khác. Tôi biết tôi có thể làm cho calculate
chấp nhận giao diện thay vì một lớp cụ thể, tức là, calculate(IBoard board)
nhưng tôi IMO không phải là tất cả tốt hơn trường hợp đầu tiên.
Tôi sợ quá tập trung vào việc triển khai hiện tại để có thể nghĩ về các thiết kế hoàn toàn khác nhau có thể phù hợp với ít nhất cũng như các giải pháp cho vấn đề này. Có lẽ tôi có thể tái cấu trúc toàn bộ trò chơi và có tiền thưởng ở nơi khác, vì vậy nó sẽ tạo thuận lợi cho tính toán này? Có lẽ tôi quá tập trung vào việc có chúng trên Board
? Tôi chắc chắn hy vọng có những cách tiếp cận khác cho vấn đề này ngoài kia!
Cảm ơn
+1 cho sơ đồ đẹp –
Bạn đã sử dụng công cụ nào để tạo biểu đồ? –
yUML, nó cho phép bạn tạo chúng và lưu trữ chúng trực tuyến. –