156
«Молодой учёный»
. № 4 (138)
. Январь 2017 г.
Информатика
3. Тимофеев, А. В. Мульти-агентные робототехнические системы и нейросетевые технологии // Известия ЮФУ.
Технические науки. — 2010. — № 3 (104). — с. 20–23.
4. Нагоее, З. В., Бозиее А. О. Классификация изображений на основе модели онтонейроморфогенеза //
Известия
Кабардино-Балкарского НЦ РАН. — 2011. — № 1. — с. 196–200.
5. Осоеский, С. Нейронные сети для обработки информации / пер. с польск. — М.: Финансы и статистика, 2002. —
344 с.
6. Zhou, Z. H., Wu J., Tang W. Ensembling neural networks // Many could be better than all, Artif. Intell. — 2002. —
Vol. 137, № 1–2. — Р. 239–263.
7. Ляхов, А. Л., Алешин С. П. Искусственная нейронная сеть как измерительный инструмент адекватности модели
с адаптивным классом точности // 4-я МНПК «Математическое и имитационное моделирование систем»: Те-
зисы докладов. — Киев:
ИПММС НАН Украины, 2009. — с. 116–119.
8. Воеводин, Ю. Ю., Комарцова Л. Г. Применение генетического алгоритма для оптимизации параметров ней-
ронной сети в задачах классификации // Информатика: проблемы, методология, технологии. — М.:
Изд-во
МГТУ им Баумана, 2005. — С 42–46.
9. Курейчик, В. М. Проблем, обзор и параллельные генетические алгоритмы: состояние // Известия РАН. Теория
и системы управления. — М., 2010. — № 4. — с. 72–82.
10. Дуккардт, А. Н., Лебедев Б. К. Комплексный гибридный генетический алгоритм // Известия ЮФУ.
Технические
науки. — 2008. — № 4 (81). — с. 26–32.
Шаблоны проектирования GoF. Структурные шаблоны.
Proxy, компоновщик, Bridge
Григорьева Евгения Юрьевна, студент
Дальневосточный федеральный университет (г. Владивосток)
П
аттерны проектирования,
впервые опубликованные в
книге «Design Patterns — Elements of Reusable Ob-
ject-Oriented Software» Эрихом Гаммой и его товарищами,
можно разделить на три группы: порождающие паттерны
проектирования (Creational Patterns), структурные пат-
терны проектирования классов/объектов (Structural Pat-
terns) и паттерны проектирования поведения классов/
объектов (Behavioral Patterns). В этой статье я рассмотрю
основные структурные шаблоны.
К числу структурных
шаблонов принадлежат следу-
ющие шаблоны:
— Адаптер (Adapter);
— Декоратор (Decorator) или Оболочка (Wrapper);
— Заместитель (Proxy) или Суррогат (Surrogate);
— Компоновщик (Composite);
— Мост (Bridge), Описатель (Handle) или Тело (Body);
— Приспособленец (Flyweight);
— Фасад (Facade).
Шаблон «Заместитель» (Proxy) решает проблему,
когда необходимо управлять доступом к объекту, так
чтобы создавать громоздкие объекты «по требованию».
Решение заключается в следующем:
— создать суррогат громоздкого объекта. «Замести-
тель» хранит ссылку, которая позволяет заместителю об-
ратиться к реальному субъекту (объект класса «Замести-
тель» может обращаться к
объекту класса субъект, если
интерфейсы «РеальногоСубъекта» и «Субъекта» одина-
ковы);
— Поскольку интерфейс «РеальногоСубъекта» иден-
тичен интерфейсу «Субъекта», так, что «Заместителя»
можно подставить вместо «РеальногоСубъекта», контро-
лирует доступ к «Реальному субъекту», может отвечать за
создание или удаление «РеальногоСубъекта». «Субъект»
определяет общий для «РеальногоСубъекта» и «Замести-
теля» интерфейс так, что «Заместитель» может быть ис-
пользован везде, где ожидается «РеальныйСубъект»;
— При необходимости запросы могут быть переадре-
сованы «Заместителем» «РеальномуСубъекту».
По большому счету, паттерн «Декоратор» есть не-
сколько заложенных друг в друга «Proxy», то есть «Proxy»,
который проксирует другой «Proxy» и т. д.
«Заместитель» может
иметь и другие обязанности, а
именно:
— удаленный «Заместитель» может отвечать за коди-
рование запроса и его аргументов и отправку закодиро-
ванного запроса реальному «Субъекту»;
— виртуальный «Заместитель» может кэшировать
дополнительную информацию о реальном «Субъекте»,
чтобы отложить его создание;
— защищающий «Заместитель»
может проверять,
имеет ли вызывающий объект необходимые для выпол-
нения запроса права.