| Summary: Структурные шаблоны:Приспособленец |
| Author: jsakalos, Чернышёв Александр (перевод + примечание) |
| Published: 23 ноября 2008 |
| Ext Version: 1.1 |
Languages: English Русский Korean
|
Шаблон Flyweight (Приспособленец) используется для облегчения работы с большим количеством мелких объектов.
N.B. Следующий текст взят непосредственно с форума из сообщения jsakalos'а, посвященного шаблону Приспособленцу.
Ext.Element добавляет большой набор функциональных возможностей для элемента/узла DOM, например, такие функции как скрытие, отображение (показ), всевозможные анимационные эффекты, определение и установка размеров и многое другое.
Ext.Element хранит ссылку на элемент DOM в свойстве dom. Если у Вас есть Ext.Element (например, вы получили его с помощью функции Ext.get('some-id')), то он является экземпляром класса Element и Вы можете работать с ним как с таковым.
Теперь представьте, что Вам необходимо скрыть 1000 узлов DOM, и Вы вызываете 1000 раз функцию Ext.get('some-one-of-1000-id').hide(), создавая таким образом 1000 экземпляров класса Element только для того, чтобы вызвать одну функцию: hide.
Ext.fly - использует единственный экземпляр класса Ext.Element с "замещаемым" узлом DOM. Если Вы вызовете 1000 раз функцию Ext.fly('some-one-of-1000-id').hide(), то тем самым 1000 раз измените свойство dom всего одного экземпляра класса Ext.Element.
Результат: увеличение производительности, уменьшение использования памяти.
Помните только одно: Вам не нужно сохранять ссылку на Element, который вернул метод Ext.fly, для дальнейшего использования, т.к. значение свойства dom со временем может быть заменено ссылкой на другой узел DOM.
Примечание к статье.
Необязательный параметр named метода Ext.fly позволяет создавать Приспособленцев, имеющих имя named, для дальнейшего их использования с целью предотвращения конфликтов (например, Ext использует внутреннее имя "_internal"; Приспособленец, используемый пользовательской программой по умолчанию, имеет имя "_global").