cuốn sách gpt4 ai đã làm

Giới thiệu và sử dụng trạng thái máy

In lại Tác giả: Sahara Thời gian cập nhật: 26-12-2024 12:49:42 56 4
mua khóa gpt4 Nike

Máy trạng thái trạng thái khác nhau. Sau đây là phần giới thiệu chi tiết về trạng thái thiết kế mẫu.

1. Khái niệm cơ bản về trạng thái máy

  • tình trạngVí dụ: trạng thái của đơn hàng có thể là "Mới", "Đang xử lý" hoặc "Đã hoàn thành".
  • sự kiện: Trình kích hoạt thay đổi trạng thái, tạo ra giới hạn hành động của người dùng, thời gian đến hoặc đầu vào bên ngoài bên ngoài khác.
  • chuyển nhượng nhà nước: Quá trình chuyển từ trạng thái này sang trạng thái khác, thường thực hiện các điều kiện cung cấp.
  • bối cảnh: Object chứa hiện tại trạng thái của trạng thái máy và liên kết dữ liệu.

2. Trạng thái máy sự kiện

Một bao trạng thái máy thường bao gồm các thành phần sau:

  • tiểu bang: Xác định tất cả các trạng thái mà hệ thống có thể ở.
  • Sự kiện: Sự kiện kích hoạt thay đổi trạng thái.
  • Chuyển tiếp: Mô tả các quy tắc chuyển tiếp giữa các trạng thái, thường được gắn liền với các cụ thể.
  • hành động: Thao tác được thực hiện khi trạng thái vào, thoát hoặc chuyển trạng thái.

3. Các loại máy trạng thái

Trạng thái máy chủ có thể được chia thành hai loại chính:

  • Hạn chế trạng thái máy chủ (FSM): Số lượng trạng thái có giới hạn và phù hợp để hầu hết các vấn đề.
  • Phân cấp trạng thái máy chủ: Cho phép xây dựng trạng thái để tổ chức các trạng thái phức tạp tốt hơn.

4. Ưu điểm của trạng thái

  • rõ ràng: Phân tách rõ ràng giữa trạng thái và hành vi giúp mã hóa dễ đọc và dễ bảo trì hơn.
  • tính linh hoạt: Thuận tiện để sửa đổi và mở rộng trạng thái logic, đưa ra các giới hạn như bổ sung trạng thái hoặc sự kiện mới.
  • Kiểm tra khả năng: Mỗi trạng thái và quá trình chuyển đổi có thể được kiểm tra cài đặt độc lập, nâng cao độ tin cậy của hệ thống.

5. Thực hiện trạng thái máy chủ

Máy trạng thái có thể được thực hiện theo nhiều cách khác nhau, bao gồm các phương pháp phổ biến:

  • Sử dụng câu lệnh có điều kiện (if-else hoặc switch-case): Máy trạng thái đơn giản có thể phát triển khai trực tiếp bằng câu lệnh điều kiện, nhưng khi trạng thái và sự kiện tăng lên, mã sẽ trở nên phức tạp và khó bảo trì.

  • Mẫu trạng thái: Một gói biểu tượng hướng dẫn thiết kế mẫu rút gọn các hành vi liên quan đến trạng thái bằng cách tạo các trạng thái lớp trạng thái để đạt được chuyển đổi trạng thái động.

  • Khung máy trạng thái: Sử dụng các thư viện hoặc khung trạng thái có sẵn (như Stateless4j, Spring State Machine, vv) để đơn giản hóa công việc tạo và quản lý trạng thái máy.

6. Ví dụ về mẫu trạng thái

Dưới đây là ví dụ về phát triển khai báo một trạng thái đơn giản sử dụng mẫu trạng thái, biết cách quản lý trạng thái của đơn hàng.

// thứ tự mới."); . setState(new TreatmentOrderState()); } } class TreatmentOrderState phát triển OrderState { public void handler(OrderContext context) { System.out.println("Đang xử lý đơn hàng."); context. setState(new CompleteedOrderState()); } } lớp CompletedOrderState phát triển OrderState { public void handler(OrderContext context) { System.out.println("Đơn hàng đã hoàn thành.") ; } } //Lớp bối cảnh lớp OrderContext { trạng thái OrderState riêng public OrderContext() { this.state = new NewOrderState(); // Trạng thái cấm đầu} public void setState(OrderState state) { this.state = state } public void request() { state.handle(this); khách public class StatePatternDemo { public static void main(String[] args) { OrderContext order = new OrderContext(); order.request(); // Xử lý đơn hàng mới order.request(); // Đơn hàng đang trong quá trình order.request(); // Đơn hàng đã hoàn thành} }

7. Tóm tắt

Clear phân tích bằng cách các trạng thái, sự kiện và logic chuyển tiếp, trạng thái máy làm cho cấu trúc của chương trình trở nên rõ ràng, dễ hiểu và dễ dàng bảo trì hơn. trạng thái là một công cụ rất hữu ích. Phát triển và nâng cao hiệu quả.

Sử dụng máy trạng thái stateless4j

  • Dự án địa chỉ: https://github.com/stateless4j/stateless4j
  • Các trường trạng thái và trạng thái hiện tại có thể được lưu trong cơ sở dữ liệu và được lưu trữ trong các cơ sở dữ liệu file in version.
    tài nguyên/stateless.json
[ { "state": "Đang chờ thanh toán", "kích hoạt": "Thanh toán của người dùng", "destinationState": "Đang chờ lô hàng" }, { "state": "Đang chờ lô hàng", "kích hoạt": "Giao hàng" , "destinationState": "Đang nhận" }, { "state": "Đã nhận", "trigger": "Xác nhận đã nhận", "destinationState": "Đã hoàn thành" }, { "state": "Đã hoàn thành" End end", "kích hoạt": "Đã xếp hạng", "destinationState": "Đã xếp hạng" }, { "state": "Đã xếp hạng", "deto": "Đã xóa", "DestinationState": "Đã xóa " } ]

Các thử nghiệm hợp lệ của trường.

/** * Trạng thái được đọc từ tệp*/ @Test public void stateFromDb() Ném IOException { String content = FileUtils.readToEnd( StateMachineExample.class.getClassLoader().getResourceAsStream("stateless.json"), Charset.defaultCharset( )); StateMachineConfig stateMachineConfig = Danh sách StateMachineConfig mới<>();> map = objectMapper.readValue(nội dung, TypeReference mới<><>>>>() { }); ("trạng thái"); Trình kích hoạt chuỗi = o.get("trigger"); Chuỗi DestinationState = o.get("DestinationState" }); stateMachine = new StateMachine<>("Sẽ được nhận", stateMachineConfig("Trạng thái hiện tại: {}", stateMachine.getState()); ("Xác nhận đã nhận"); log.info("Trạng thái hiện tại: {}", stateMachine.getState() }

Kết quả là, nếu trạng thái và hoạt động của bạn không ở mức tối thiểu, thì trạng thái sẽ được thu thập và thu thập hành động của bạn là giá trị, thì trạng thái máy sẽ báo lỗi và trạng thái không thể cập nhật chính xác.

Cuối cùng, bài viết giới thiệu và sử dụng máy trạng thái cuối cùng ở đây. Tôi hy vọng bạn sẽ hỗ trợ tôi trong blog tương lai .

56 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress