Có một lỗi thiết kế khi trạng thái của một thực thể không sử dụng đầy đủ enter (), exec () và exit ()?


9

Tôi đang theo dõi ví dụ về trò chơi lập trình AI của Mat Buckland và tôi thấy rằng tôi không phải lúc nào cũng sử dụng cho enter (), exec () và exit () trên trạng thái của một thực thể. Ví dụ: trong một game nhập vai, vũ khí có thể có trạng thái được trang bị và tôi có thể sử dụng enter () và exit () cho trạng thái đó để thêm hoặc bớt vào công cụ sửa đổi khả năng của người chơi, nhưng thực sự không cần phải thực thi ( ). Đây có phải là một lỗ hổng thiết kế trong động cơ của tôi, hay thiếu sót của phương pháp này?

Câu trả lời:


8

Chưa đọc cuốn sách, những cuộc gọi đó nghe như điểm nhập cảnh bình thường cho một máy trạng thái. Để hiểu các cuộc gọi, chúng ta hãy nhìn vào những gì họ làm.

enter () - được thực thi khi trạng thái được kích hoạt.

exec () - thực hiện trong khi trạng thái được kích hoạt.

exit () - được thực thi khi trạng thái bị hủy kích hoạt.

Những phù hợp với bất kỳ loại máy nhà nước. Một số máy chỉ cần các cuộc gọi 'thực thi', một số máy khác cần 'nhập' và 'thoát' và các máy khác vẫn cần cả ba.

Ví dụ 1 : Súng máy kích hoạt.

  • Thực thi: đạn lửa ở tốc độ đặt.

Ví dụ 2 : Cầu lực

  • Enter: làm cầu xuất hiện
  • Thoát: làm cho cây cầu biến mất

Ví dụ 3 : Áo giáp sức mạnh cá nhân.

  • Enter: bảo vệ người chơi thêm
  • Thực thi: xả pin
  • Thoát: loại bỏ bảo vệ thêm

8

Nó không nhất thiết là một dấu hiệu của bất kỳ lỗ hổng. Không phải mọi thực thể hoặc nhà nước sẽ có một cách sử dụng cho mọi phương thức có sẵn. Chỉ cần để trống phương thức exec () sẽ ổn, IMO.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.