It is recommended that you're familiar with both patterns if you're going to use this package.
To give you a feel about how this package can be used, let's look at a quick example.
Imagine a model Payment, which has three possible states: Pending, Paid and Failed. This package allows you to represent each state as a separate class, handles serialization of states to the database behind the scenes, and allows for easy and controller state transitions.
For the sake of our example, let's say that depending on the state the color of a payment should differ.