Khi nói đến "Finite-State Machine", chúng ta sẽ gặp một số vấn đề với logic chuyển đổi từ state này đến state khác. Bên cạnh đó, các state này ảnh hưởng tới các hành vi của các object. Mỗi state có nhiều ràng buộc cụ thể khác nhau.
Từ đó chúng ta sẽ cần mô hình hoá các state trở thành những object thay vì chỉ là một attribute đơn thuần. Đó chính là State pattern.