Using this pattern it allows you to add more features or functionality without modifying the struct/object/class.
Open/Closed Principle since you can add more features or functoinality without modifying the struct.
Single Responsibility since your working specific feature or functoinality of each object.