Якщо є логіка, яка спільна для різних класів рівня, її можна винести у супертип.
Наприклад, генерація значень, які використовуються в різних місцях.
static class ValueGenerator
{
public string Generate()
{
return new Random(1000, 9999).ToString();
}
}
Також, супертип може містити логіку спільну для всіх класів свого рівня. Наприклад, коли одні й ті самі методи дублюються у всіх об'єктах рівня. Тоді щоб не дублювати код між усіма класами рівня використаємо супертип.
Типовим прикладом буде поле ідентифікатора, яке спільне для всіх об'єктів доменного рівня.
class DomainObject
{
private int id;
public int Id
{
get
{
return id;
}
set
{
if (value == 0) throw new InvalidOperationException();
id = value;
}
}