Русская Википедия:Приспособленец (шаблон проектирования)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Шаблон проектирования

Приспособленец (Шаблон:Lang-en, «легковесный (элемент)») — структурный шаблон проектирования, при котором объект, представляющий себя как уникальный экземпляр в разных местах программы, по факту не является таковым.

Цель

Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность.

Описание

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

Приспособленец дополняет шаблон фабрика таким образом, что при обращении клиента к фабрике для создания нового объекта ищет уже созданный объект с такими же параметрами, что и у требуемого, и возвращает его клиенту. Если такого объекта нет, то фабрика создаст новый.

Файл:Flyweight.gif

Примеры

Пример на Python

Шаблон:Hider hiding

Пример на Python (с переопределением конструктора)

Шаблон:Hider hiding

Пример № 1 на Java

Шаблон:Hider hiding

Пример № 2 на Java

Шаблон:Hider hiding

Пример на C#

Шаблон:Hider hiding

Пример на C++

Шаблон:Hider hiding

Пример на PHP5

Шаблон:Hider hiding

Пример на VB.NET

Шаблон:Hider hiding

Пример на Ruby

Шаблон:Hider hiding

Символы на Smalltalk

Символы в Smalltalk практически идентичны «обычным строкам», но не порождаются каждый раз заново. Два идентичных символа на самом деле всегда являются одним и тем же экземпляром класса Symbol, тогда как две идентичные строки могут быть разными экземплярами класса String.

Ссылки

Шаблон:Типы Паттернов