Cập nhật:mô hình Nhà nước và bảo vệ
mô hình nhà nước có một cách sai lầm để giải quyết này. Do đó, bất kỳ mẫu nào khác đều được chào đón. Về cơ bản tôi đang tìm kiếm một cách để có điều kiện bảo vệ cho mỗi tiểu bang nhưng có một mã sạch sẽ và duy trì. Các hệ thống định tuyến phía trước như thế nào, emberjs, ui-router và bộ phản ứng-router thực hiện guard conditions
để tránh nhập trạng thái cụ thể nếu điều kiện không được đáp ứng?
Tôi muốn thực hiện một máy trạng thái hữu hạn bằng cách sử dụng Mẫu nhà nước nhưng tôi không thể quấn quanh đầu. Nói tóm lại, nó giống như:
If error -> error state
If A && B && C -> second state
If only A -> first state
Ở bất kỳ trạng thái nào, chúng tôi đi đến trạng thái lỗi. đầu vào (sự kiện) A, B và C có thể đến bất kỳ thứ tự nào nhưng nếu tất cả chúng vượt qua, chúng tôi sẽ chuyển sang trạng thái thứ hai. Nếu chỉ áp dụng đầu vào A, thì chúng ta sẽ chuyển sang trạng thái thứ nhất.
Sơ đồ trạng thái sau đây được lấy từ cuốn sách Ngôn ngữ cụ thể của miền của Martin Fowler.
Trong mô tả ông nói:
Hoa hậu Grant, có một ngăn bí mật trong phòng ngủ của cô đó là bình thường khóa và giấu. Để mở nó, cô phải đóng cánh cửa, sau đó mở ngăn kéo thứ hai trong lồng ngực và bật đèn cạnh giường của mình trên theo thứ tự. Khi những việc này được thực hiện, bảng điều khiển bí mật được mở khóa để cô ấy mở.
Tôi nhấn mạnh, rằng turning light
và opening 2nd drawer
thể xảy ra trong trật tự hoặc. Tương tự như A, B và C.
Dựa trên nhận xét @SQLPolice và cuốn sách, tôi đã rút ra điều này:
Nhưng vấn đề là, tôi có thể có (A & & B & & C & & D & & D & & E). Trong trường hợp đó nó sẽ là cồng kềnh để có tất cả các trạng thái tạm thời kết hợp.
bạn có trạng thái bắt đầu, tôi giả sử? –
Bạn đang vẽ cái gì trong ... UML/Flow ...? –
@DavidBarker, cả hai. Tôi chỉ cần một cái gì đó trực quan để hiểu làm thế nào để thực hiện. – norbertpy