Enumeration is based on Iterator design pattern. Iterator design
pattern provides a common interface with methods to traverse the
collection of objects. It hides the underlying implementation details
of the collection
https://www.geeksforgeeks.org/how-to-implement-a-strategy-pattern-using-enum-in-java/