Відкрити головне меню

Зміст

ПризначенняРедагувати

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

ОписРедагувати

Шаблон Легковаговик (Flyweight) використовує загальнодоступний легкий об'єкт (flyweight, легковаговик), який одночасно може використовуватися у великій кількості контекстів. Стан цього об'єкта поділяється на внутрішній, що містить інформацію, незалежну від контексту, і зовнішній, який залежить або змінюється разом з контекстом легковаговика. Об'єкти клієнтів відповідають за передачу зовнішнього стану легковаговика, коли йому це необхідно.

ПеревагиРедагувати

  • Зменшує кількість об'єктів, що підлягають обробці.
  • Зменшує вимоги до пам'яті.

НедолікиРедагувати

  • Переміщення стану поза об'єктом розбиває інкапсуляцію та може бути менш ефективним, ніж збереження власного поля

ЗастосуванняРедагувати

Шаблон Легковаговик можна використовувати коли:

  • В програмі використовується велика кількість об'єктів.
  • Затрати на збереження високі через велику кількість об'єктів.
  • Більшість станів об'єктів можна зробити зовнішніми.
  • Велика кількість груп об'єктів може бути замінена відносно малою кількістю загальнодоступних об'єктів, однократно видаливши зовнішній стан.
  • Програма не залежить від ідентичності об'єктів. Оскільки об'єкти-легковаговики можуть використовуватися колективно, то тести на ідентичність будуть повертати значення "істина" ("true") для концептуально різних об'єктів.

Діаграма UMLРедагувати

 

РеалізаціяРедагувати

C++Редагувати

C#Редагувати

JavaРедагувати

ДжерелаРедагувати

ЛітератураРедагувати

Алан Шаллоуей, Джеймс Р. Тротт. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию = Design Patterns Explained: A New Perspective on Object-Oriented Design. — М. : «Вильямс», 2002. — 288 с. — ISBN 0-201-71594-5.


  1. Будай, Андрій (2012). Дизайн-патерни — просто, як двері (Українською). с. 90.