Название шаблона
Приспособленец (Flyweight).Тип
Структурный шаблон проектирования (Structural).Описание
Приспособленец это экземпляр объекта, который выдается себя за группу самостоятельных экземпляров. Шаблон применяется если:
Пул или Фабрика приспособленцев (Flyweight Pool / Factory) – объект, создающий и управляющий экземплярами Приспособленцев.
Неразделяемый объект (Unshared Flyweight) – экземпляр, существующий вне рамок шаблона.
Особенности применения шаблона
Главным моментом при реализации шаблона является правильное разделение состояния объекта на внутреннее и внешнее. Именно возможность сделать это корректно и является главным фактором применимости шаблона. При этом очень важно, чтобы вынесенная информация вписывалась в абстракцию ее нового хранилища. Так, например, информация о координатах деревьев вполне соответствует абстракции, описываемой объектом "квартал города". А вот графическое изображение самого дерева уже является для него посторонним. Некоторые объекты могут иметь очень большое число различных вариантов состояния. Тогда в результате применения шаблона общее число объектов не сильно уменьшится. В этом случае можно рассмотреть следующий вариант: вынесенное состояние не сохраняется в отдельной структуре, а рассчитывается непосредственно перед вызовом Приспособленца. Разумеется, такие вычисления не должны быть сложными и наносить урон производительности приложения.
Read more: Andrey on .NET
Приспособленец (Flyweight).Тип
Структурный шаблон проектирования (Structural).Описание
Приспособленец это экземпляр объекта, который выдается себя за группу самостоятельных экземпляров. Шаблон применяется если:
- в приложении используется большое число очень схожих экземпляров заданного класса;
- (и) часть состояния объекта является контекстной и может быть легко вынесена во внешние структуры;
- (и) после вынесения части состояния, все экземпляры становятся одинаковыми и это дает возможность заменить их одним;
- (и) приложение не проверяет идентичность объектов, т.к. в этом случае все якобы самостоятельные экземпляры являются одним объектом.
Пул или Фабрика приспособленцев (Flyweight Pool / Factory) – объект, создающий и управляющий экземплярами Приспособленцев.
Неразделяемый объект (Unshared Flyweight) – экземпляр, существующий вне рамок шаблона.
Особенности применения шаблона
Главным моментом при реализации шаблона является правильное разделение состояния объекта на внутреннее и внешнее. Именно возможность сделать это корректно и является главным фактором применимости шаблона. При этом очень важно, чтобы вынесенная информация вписывалась в абстракцию ее нового хранилища. Так, например, информация о координатах деревьев вполне соответствует абстракции, описываемой объектом "квартал города". А вот графическое изображение самого дерева уже является для него посторонним. Некоторые объекты могут иметь очень большое число различных вариантов состояния. Тогда в результате применения шаблона общее число объектов не сильно уменьшится. В этом случае можно рассмотреть следующий вариант: вынесенное состояние не сохраняется в отдельной структуре, а рассчитывается непосредственно перед вызовом Приспособленца. Разумеется, такие вычисления не должны быть сложными и наносить урон производительности приложения.
Read more: Andrey on .NET
0 comments:
Post a Comment