From my pov, both inheritance and encapsulation aren't great if you have to maintain code and add new one.

Also, I dislike design patterns overuse, DDD done Uncle Bob style.

Also we can think of where OOP drives many teams to:

https://steve-yegge.blogspot.com/2006/03/execution-in-kingdo...

https://factoryfactoryfactory.net/

https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...

    > https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
This! Everytime I see this project, I laugh out loud. The description reads:

    > FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.
I mean come on, these guys are serious!