2013-06-14 41 views

Trả lời

20

FSM là một DSL cho phép bạn xây dựng tinh vi hơn, có thể đọc được máy trạng thái hơn sẽ có thể sử dụng API diễn viên chính. Bạn có khả năng có thể hiển thị mã FSM cho một người kinh doanh và họ có thể xác thực các quy tắc kinh doanh.

DSL FSM DSL cho phép bạn kết hợp mọi thứ với nhau một cách rõ ràng hơn. Ví dụ: transitions cho phép bạn tính toán logic sẽ phải được nhân đôi trên các hành vi của diễn viên become. Ngoài ra, bạn có thể đăng ký các diễn viên khác để được thông báo về các quá trình chuyển đổi giúp tách và thử nghiệm.

Đồng thời bộ hẹn giờ được tích hợp độc đáo vào DSL và những thứ như hủy được xử lý sạch sẽ. Việc mã hóa các thông báo hết thời gian bằng cách sử dụng bộ lập lịch có một số lượng nhỏ.

Mặt bên xuống là FSM là đó là DSL và cú pháp mới cho các thành viên khác trong nhóm tiêu hóa. Phía lên là nó là một DSL và một mức trừu tượng cao hơn nhiều. Tôi nghĩ ngưỡng của Agilesteel ở 2 bang là tốt nhất. Nhưng khi bạn vượt qua 2 trạng thái, lợi ích của FSM thực sự hấp dẫn.

Chắc chắn đọc the FSM docsaccompanying examples tương phản becomeFSM.

Một lưu ý: "popping" một hành vi sử dụng unbecome - hành vi mặc định là không sử dụng xếp chồng hành vi. Nó chỉ có liên quan trong một số ít trường hợp sử dụng (ví dụ, thường không phải máy nhà nước).

14

Trở thành/Không phân biệt rất nhẹ trái ngược với FSM. Vì vậy, trừ khi bạn có nhiều hơn 2 trạng thái (on/off chẳng hạn) và/hoặc các chính sách thay đổi trạng thái phức tạp, tôi sẽ không chuyển đổi trở thành/Unbecome thành FSM đầy đủ. Khác sau đó, tôi nghĩ rằng có sự khác biệt chỉ nhỏ ... Giống như ví dụ FSMs cung cấp cho bạn một đẹp được xây dựng trong timer DSL:

setTimer("TimerName", msg, 5 seconds, repeat = true) 
// ... 
cancelTimer("TimerName") 

Hoặc ví dụ tôi không chắc chắn nếu nó có thể trong một FSM để " quay trở lại "về trạng thái trước đó, chỉ có" tiến lên ", vì bạn phải xác định rõ ràng trạng thái nào cần đến. Trong khi đó, unbecome sẽ cung cấp cho bạn chính xác điều đó.

Các vấn đề liên quan