Супертип рівня (шаблон проєктування)

Супертип рівня (англ. Layer Supertype) — шаблон проєктування, який пропонує винести повторювану логіку в окремий клас.

Опис

Якщо є логіка, яка спільна для різних класів рівня, її можна винести у супертип.

Наприклад, генерація значень, які використовуються в різних місцях.

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;
      }
}

Джерела