Trung BìnhDesign Patterns iconDesign Patterns

State pattern là gì? Khác FSM (Finite State Machine) ở đâu?

State pattern cho phép object thay đổi behavior khi state nội tại thay đổi — object dường như thay đổi class. Thay vì if (state === 'idle') ... else if (state === 'loading') ... khắp codebase, mỗi state là một class với behavior riêng.

Ví dụ: TrafficLight có states RedState, GreenState, YellowState — mỗi state implement interface TrafficLightState { next(light: TrafficLight): void; getColor(): string }. State pattern và FSM (Finite State Machine) rất gần nhau: FSM là concept toán học (states, transitions, inputs), State pattern là implementation OOP của FSM. Thư viện XState cho JavaScript implement FSM/Statechart theo cách declarative, phù hợp hơn State pattern thuần cho complex flows. Dùng khi: object có behavior phụ thuộc rõ ràng vào state; khi state transitions phức tạp và cần maintainable. Không dùng khi: chỉ 2-3 states đơn giản — enum + switch/case readable hơn.

Xem toàn bộ Design Patterns cùng filter theo level & chủ đề con.

Mở danh sách Design Patterns