Inheritance
- Allows to create a new class after extending an existing class
- Represents Generalization-Specialization relationship
- Allows overriding existing methods

Discriminator
Allows one to group subclasses into clusters based on roles
Disadvantages
- Leads to tight coupling
- Indiscriminate use leads to poor quality