Praticamente il polimorfismo...

Forse possono esserti utili lo static factory e/o l'abstract factory.