Can't we just create a separate class, like a `Battle`?
And then do `Battle.between(knight, mage)` where Battle
would handle the negotiations between the two classes? Maybe producing a result without mutating the two entities we pass as arguments.
I feel like it depends on what the business is. Is it tracking wizard adventures, fighter exp calculator or distributed battle log.