Обзор темы [Шаблоны проектирования]

Затем: МотивацияНазначение

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

Затем: СтруктураМотивация

Редактор для файлов формата RTF должен быть способен преобразовать RTF во многие текстовые форматы. Редактор мог бы преобразовывать RTF документы в простой текст ASCII или в widget текст, который может быть отредактирован в интерактивном режиме. Проблема, однако, состоит в том, что число возможных преобразований является неограниченным. Так что хотелось бы иметь возможность добавлять новое преобразование без внесения существенных изменений в редактор.

Решение состоит в том, чтобы определить класс RTFReader с объектом TextConverter, который преобразует RTF в другие текстовые представления. По мере чтения RTF файла, RTFReader использует TextConverter, чтобы выполнить преобразование. Всякий раз, когда RTFReader распознает лексему RTF (простой текст или слово управления RTF), он делает запрос к TextConverter, чтобы преобразовать (обработать) эту лексему. Объект TextConverter ответствен за выполнение преобразования данных и за представление лексемы в специфическом формате.

Подклассы TextConverter специализируются на преобразованиях в различные форматы. Например, ASCIIConverter игнорирует запросы на преобразование чего-либо за исключением простого текста. TeXConverter, с другой стороны, выполняет операции для всех запросов, чтобы сгенерировать представление TeX, которое фиксирует всю стилистическую информацию в тексте. TextWidgetConverter реализует сложный объект интерфейса пользователя, который позволяет пользователю видеть и редактировать текст.

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

Шаблон Builder фиксирует все эти связи. Каждый класс преобразователя называется builder, а читатель называется director. Применительно к данному примеру, шаблон отделяет алгоритм для интерпретации текстового формата (то есть синтаксический анализатор для RTF документов) от того, как он создается и представляется. Это позволяет нам многократно использовать синтаксический анализатор RTFReader, создавать различные текстовые представления RTF документов.

Затем: Составные частиСтруктура

Составные части