| Users / Scale | Design Complexity | Code Reuse | Flexibility | Maintenance Effort |
|---|---|---|---|---|
| 100 users | Simple class hierarchies, few components | Basic reuse via inheritance | Low flexibility, rigid structures | Low effort, easy to track |
| 10,000 users | More components, inheritance chains grow | Reuse limited by tight coupling | Harder to change behavior without side effects | Moderate effort, risk of bugs |
| 1,000,000 users | Complex hierarchies cause code duplication and rigidity | Inheritance limits reuse, causes fragility | Low flexibility, difficult to extend | High effort, frequent regressions |
| 100,000,000 users | Inheritance leads to brittle, unmaintainable code | Reuse blocked by deep coupling | Very low flexibility, hard to scale features | Very high effort, costly fixes |
Using composition instead allows building flexible, reusable components that can be combined without deep inheritance chains, improving scalability and maintainability at all scales.