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