FINITE STATE MACHINE LÀ GÌ

 - 

1. State machine là gì?

State Machine là một trong mô hình tính tân oán dựa vào một thứ giả định được chế tạo thành xuất phát điểm từ 1 hoặc các trạng thái. Nó gửi từ tinh thần này sang trạng thái khác để triển khai các hành vi không giống nhau.

2. Khi như thế nào ta đề xuất thực hiện State machine ?

Lúc họ mong mỏi chia một nhiệm vụ bự và phức tạp thành hầu hết đơn vị chức năng bé dại hòa bình.

3. Lợi ích của bài toán cần sử dụng state machine ?

* dễ ợt theo dõi quy trình biến hóa / tài liệu / sự kiện nào tạo ra trạng thái hiện giờ của trải nghiệm. * ngăn chặn những vận động câu lệnh phạm pháp.* Bảo trì dễ dàng,quy trình đổi khác tâm lý tự do nhau.* Ổn định cùng thuận lợi chuyển đổi.

4. Công thức tính ?

Current State + Some Action / Event= Another State

State machine thực hiện theo State Design pattern. lấy một ví dụ nlỗi sau:

*

Giả sử Chúng ta đi mượn sách ở thỏng viện, đều cuốn nắn sách bên trên kệ sách là đa số cuốn nắn có mức giá trị hiểu và áp dụng (Available). Chúng ta hoàn toàn có thể mượn (Borrow) sách, bây giờ DB của thư viện đã giữ tâm lý Borrowed. Trường vừa lòng nếu mà Lúc mượn nhưng làm cho rách sách thì bọn họ sẽ chịu thêm 1 số ngân sách mang lại tlỗi viện cùng từ bây giờ thư viện sẽ mang theo sửa (Start repair) Khi đưa theo sửa kết thúc sách tất cả trạng thái là In_Repair. Trường thích hợp sửa ngừng (End Repair) mình mạn phép mang lại sống trạng thái Borrowed. Và Cuối cùng mượn ngừng thì họ trả sách (Return) và sách biến chuyển tâm trạng (Available) tín đồ phát âm khác hoàn toàn có thể mượn sách.

5. State Design pattern:

*

Code:

public interface States public void on();public void off();public class Available implements States


Bạn đang xem: Finite state machine là gì

Overridepublic void off() System.out.println("get from AVAILABLE lớn EMPTY STATE");public class Borrowed implements States
Overridepublic void off() System.out.println("get from BORROWED khổng lồ AVAILABLE");public class InRepair implements States


Xem thêm: Take To Là Gì Và Cấu Trúc Cụm Từ Take To Trong Câu Tiếng Anh

Overridepublic void on() // TODO Auto-generated method stubSystem.out.println("get from IN_REPAIR lớn IN_REPAIR");


Xem thêm: Công Dụng Của Cây Óc Chó Trị Bệnh Gì, Cây Óc Chó Có Tác Dụng Gì

Overridepublic void off() // TODO Auto-generated method stubSystem.out.println("get from IN_REPAIR khổng lồ BORROWED");Cuối thuộc configure cho State của mình:public class FiniteStateMachine // 2. states private States<> states = new Available(), new Borrowed(), new InRepair(); // 4. transitions private int<><> transition = 0,1, 0,2, 1,2; // 3. current private int current = 0; private void next(int msg) current = transition; // 5. All client requests are simply delegated lớn the current state object public void on() states.on(); next(1); public void off() states.off(); next(0); public class StateMachineMain public static void main(String<> args) FiniteStateMachine fsm = new FiniteStateMachine(); int<> msgs = 1, 1, 1, 0 , 1; for (int msg : msgs) if (msg == 1) fsm.on(); else if (msg == 0) fsm.off(); Chương trình lúc này in ra :get from AVAILABLE khổng lồ BORROWEDget from BORROWED to IN_REPAIRget from IN_REPAIR lớn EMPTY STATEget from IN_REPAIR khổng lồ BORROWEDget from BORROWED to IN_REPAIRtheo cách làm (3) thì chúng ta có :Events : Borrow, Start Repair, End Repair, Return;States: Available, Borrowed, InRepairVD: Available + (Events) Borrow = BorrowedMỗi lần biến hóa trường đoản cú tâm trạng này thanh lịch trạng thái khác người ta điện thoại tư vấn là Transitionstại chỗ này mình quy ước On() là mũi tên phía lên, Off() là mũi tên quay trở về.Nhìn vào Sơ vật thì ta thấy sự biến đổi tinh thần 1, 1, 1, 0 , 1.Ban đầu là Available On() => tâm lý Borrowed. Borrowed On() chuyển sang IN_REPAIR...Phần tới bản thân đã ra mắt về Spring state machine