Problem Statement
When you want to add new features to an object without changing its original code, modifying the base class directly can cause bugs and make the system hard to maintain. Also, subclassing for every new feature leads to a large, complex inheritance tree that is difficult to manage and extend.
