09.04.2016 Views

Priemioop

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Структурные паттерны<br />

Структура<br />

Участники<br />

a Component (VisualComponent) - компонент:<br />

- определяет интерфейс для объектов, на которые могут быть динамически<br />

возложены дополнительные обязанности;<br />

a ConcreteComponent (TextView) - конкретный компонент:<br />

- определяет объект, на который возлагаются дополнительные обязанности;<br />

a Decorator - декоратор:<br />

- хранит ссылку на объект Component и определяет интерфейс, соответствующий<br />

интерфейсу Component;<br />

a ConcreteDecorator (BorderDecorator, ScrollDecorator) - конкретный<br />

декоратор:<br />

- возлагает дополнительные обязанности на компонент.<br />

Отношения<br />

Decorator переадресует запросы объекту Component. Может выполнять<br />

и дополнительные операции до и после переадресации.<br />

Результаты<br />

У паттерна декоратор есть, по крайней мере, два плюса и два минуса:<br />

а большая гибкость, нежели у статического наследования. Паттерн декоратор<br />

позволяет более гибко добавлять объекту новые обязанности, чем было бы<br />

возможно в случае статического (множественного) наследования. Декоратор<br />

может добавлять и удалять обязанности во время выполнения программы. При<br />

использовании же наследования требуется создавать новый класс для каждой<br />

дополнительной обязанности (например, Bor.deredScrollableTextView,<br />

BorderedTextView), что ведет к увеличению числа классов и, как следствие,<br />

к возрастанию сложности системы. Кроме того, применение нескольких

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!