Сценарій транзакції (англ. Transaction script) — шаблон проєктування, який пропонує реалізувати бізнес-логіку в межах однієї процедури.

Призначення ред.

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

Переваги та недоліки ред.

Переваги ред.

  • простий в реалізації
  • виконуються принципи ACID

Недоліки ред.

  • відсутній архітектурний поділ
  • важко розширювати функціонал
  • можливе дублювання коду

Реалізація ред.

Нехай необхідно створити користувача та відправити адміністратору сповіщення. Ці дії можна зробити незалежно, в різних транзакціях. В той час, як даний шаблон пропонує реалізувати всю логіку в межах однієї функції.

class UserService
{
	public void CreateUser(string userName)
	{
		// валідація
		if (string.IsNullOrWhiteSpace(userName))
		{
			throw new InvalidOperationException();
		}
		
		// створення користувача
		var user = new User(userName);
		db.Add(user);
		
		// створення сповіщення
		var notification = new Notification("New user has been created");
		db.Add(notification);
		
		// здійснення транзакції
		db.Commit();
	}
}

Джерела ред.