Приспособленец (Flyweight) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Описание)
(Описание)
Строка 5: Строка 5:
  
 
=== Описание ===
 
=== Описание ===
 +
В некоторых приложениях имеется множество небольших объектов, и задача экономии памяти выходит на первый план. Паттерн Flyweight предназначен для уменьшения количества объектов в системе за счет их совместного использования. Группа объектов может быть объединена в один объект если какая-то часть состояния у них совпадает. Несовпадающую же часть (так называемый внешний контекст) предлагается передавать в качестве параметра операции.
 +
 
=== Назначение ===
 
=== Назначение ===
 
Паттерн Flyweight можно использовать в случаях когда:
 
Паттерн Flyweight можно использовать в случаях когда:

Версия 16:27, 6 августа 2014

К основной странице курса

Назначение

Уменьшает количество объектов системы с многочисленными низкоуровневыми особенностями путем совместного использования подобных объектов.

Описание

В некоторых приложениях имеется множество небольших объектов, и задача экономии памяти выходит на первый план. Паттерн Flyweight предназначен для уменьшения количества объектов в системе за счет их совместного использования. Группа объектов может быть объединена в один объект если какая-то часть состояния у них совпадает. Несовпадающую же часть (так называемый внешний контекст) предлагается передавать в качестве параметра операции.

Назначение

Паттерн Flyweight можно использовать в случаях когда:

  • в приложении имеется множество почти одинаковых объектов
  • различающиеся части почти одинаковых объектов можно отделить от одинаковых и заменить эти почти одинаковые объекты одним совместно используемым объектом, передавая различающуюся часть как параметр операции

Реализация

Диаграмма классов

FlyweightCommon.png

Участники

Пример

В графическом редакторе не надо хранить каждый символ в виде объекта. Достаточно хранить по одному объекту для каждого из используемых символов кодовой таблицы и в метод рисования передавать контекст рисования (например, строку-столбец). Таким образом, у каждого объекта есть внутреннее состояние (символ, который он представляет) и внешнее (строка-столбец), которое не хранится вместе с объектом, а передается ему как параметр в качестве внешнего контекста.

Код

Достоинства и недостатки

Варианты