Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Паттерны (3).pptx
Скачиваний:
43
Добавлен:
22.03.2023
Размер:
5.4 Mб
Скачать

Flyweight - решение

Flyweight - решение

Flyweight – структура

Flyweight - участники

Flyweight (Glyph) - приспособленец:

- объявляет интерфейс, с помощью которого приспособленцы могут получать внешнее состояние или как-то воздействовать на него;

ConcreteFlyweight (Character) - конкретный приспособленец:

- реализует интерфейс класса Flyweight и добавляет при необходимости внутреннее состояние. Объект класса ConcreteFlyweight должен быть разделяемым. Любое сохраняемое им состояние должно быть внутренним, то есть не зависящим от контекста;

UnsharedConcreteFlyweight (Row, Column) - неразделяемый конкретный приспособленец:

- не все подклассы Flyweight обязательно должны быть разделяемыми.

Интерфейс Flyweight допускает разделение, но не навязывает его. Часто у объектов UnsharedConcreteFlyweight на некотором уровне структуры приспособленца есть потомки в виде объектов класса Concret eFlyweight, как, например, у объектов классов Row и Column;

FlyweightFactory - фабрика приспособленцев:

- создает объекты-приспособленцы и управляет ими;

- обеспечивает должное разделение приспособленцев. Когда клиент запрашивает приспособленца, объект FlyweightFactory предоставляет существующий экземпляр или создает новый, если готового еще нет;

Client - клиент:

- хранит ссылки на одного или нескольких приспособленцев;

- вычисляет или хранит внешнее состояние приспособленцев.

94

Flyweight – пример

Flyweight – преимущества и недостатки

Преимущества Недостатки

Экономит оперативную память.

Расходует процессорное время на поиск/вычисление контекста.

Усложняет код программы из-за введения множества дополнительных классов.

ПАТТЕРН PROXY

Proxy

Название и классификация паттерна

Заместитель - паттерн, структурирующий объекты.

Назначение

Является суррогатом другого объекта и контролирует доступ к нему.

Известен также под именем

Surrogate (суррогат).

98

Proxy - проблема

Запросы к базе данных могут быть очень медленными.

Proxy - решение

Заместитель «притворяется» базой данных, ускоряя работу за счёт ленивой инициализации и кеширования повторяющихся запросов.

Соседние файлы в папке Лекции