Eric Lippert, one of the designers of C# language, wrote a series of articles about object oriented design problems.
Here's the first article in the series: https://ericlippert.com/2015/04/27/wizards-and-warriors-part...
Here's the first article in the series: https://ericlippert.com/2015/04/27/wizards-and-warriors-part...