Allow an object to alter its behavior when its internal state changes. The object will appear to change its class
Let's put this into practice by coding up a simple application that simulates light ball behavior. We have a light ball with battery and two on and off buttons that change the state and reduce battery conditionally. If the battery reach zero, there won't be any actions happen. First, let's define a state interface as below
And we need a light ball implementation that leverage the state
And finally we would need OnState and OffState implementation like so
There we have it - the State Implementation in Go. We probably interact with system uses this pattern in real life such as vending machine, volume up button on the phones, et cetera 😛
P/s: The accompany code is included in this PR 😊
Happy coding 😎