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

Серіалізований великий об’єкт (англ. Serialized LOB) — шаблон проєктування, який пропонує зберігати великий граф об'єктів в одному полі.

Опис

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

У такому разі, даний граф об'єктів можна серіалізувати та зберегти у вигляді одного значення — LOB (large object).

Реалізація

Нехай у користувача є можливість довільно налаштувати вигляд сторінки. Вигляд сторінки зберігається у вигляді графу об'єктів.

public class Page
{
    public IContainer<IComponent> Components { get; set; }
}

class Button : IComponent
{
    public int TileX { get; set; }
    public int TileY { get; set; }
    public strig Title { get; set; }
}
class Label : IComponent
{
    public int TileX { get; set; }
    public int TileY { get; set; }
    public strig Text { get; set; }
}

У сховищі таку структуру зберігатимемо за допомогою єдиного поля.

class PageStructureTable
{
    public int Id { get; set; }
    public string PageJson { get; set; }
}

Див. також

Джерела