Обробник таблиці (Table Module)

Обробник таблиці (англ. Table Module) — шаблон проєктування, який пропонує об'єднати всю бізнес-логіку для усіх збережених даних в одному об'єкті.

Призначення[ред. | ред. код]

Традиційний ООП підхід пропонує об'єднати дані та логіку їх обробки. Тоді при збережені даних кожному екземплярові відповідає окремий запис в сховищі. Така структура працює добре, коли потрібно для кожного об'єкта окремо виконувати операції редагування. У випадку, коли необхідно виконувати однакові операції для багатьох сутностей нам необхідно отримати зі сховища усі сутності.

Обробник таблиці пропонує альтернативний підхід. Він дозволяє об'єднати дані та поведінку в одному об'єкті при цьому скористатись усіма перевагами обраного сховища даних. Обробник таблиці подібний до звичайного об'єкта, але для нього відсутнє поняття ідентичності. При цьому операції будуть застосовуватись до всіх записів в сховищі.

Таким чином, основна відмінність від моделі предметної області полягає в тому, що якщо є декілька записів у сховищі, то об'єкт буде створюватись для кожного із них в той час, як обробник таблиці буде керувати усіма записами за допомогою одного об'єкта.

Реалізація[ред. | ред. код]

class Product {     private Db _db;      public double Name { get; set; }     public double Price { get; set; }      public Product(Db db)     {         _db = db;     }      public void GetById(int id)     {         var record = _db.Products.Find(id);          Name = record.Name;         Price = record.Price;     }      public int Create()     {         var id = _db.Add(this);          return id;     }      public void Update(Predicate<Product> predicate)     {         _db.Products.Where(predicate).Put(this);     } } 

Джерела[ред. | ред. код]