Обробник таблиці (англ. 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);
    }
}

Джерела ред.