Компонентный подход в программировании


         

Другой вариант архитектуры индексатора устроен


Этот вариант архитектуры построен в стиле "каналы и фильтры" (см. следующую лекцию).


увеличить изображение
Рис. 6.3.  Архитектура индексатора в стиле "каналы и фильтры"

  • Другой вариант архитектуры индексатора устроен следующим образом. Имеется внутренняя структура данных, хранящая подготовленный на настоящий момент вариант индекса. Он представляет собой упорядоченный список без повторений всех слов, прочитанных до настоящего момента. Кроме того, имеются две переменные — строка, хранящая последнее (быть может, не до конца) прочитанное слово, и ссылка на то слово в подготовленном списке, которое лексикографически следует за последним словом (соответственно, предшествующее этому слово в списке лексикографически предшествует последнему прочитанному слову).

    В дополнение к этим данным имеются следующие компоненты:

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

      Если это разделитель слов (пробел, табуляция, перевод строки), управление получает второй компонент.

      Если это буква — третий.

      Если входной текст кончается — четвертый.

    2. Второй компонент закачивает ввод последнего слова — оно помещается в список перед тем местом, на которое указывает ссылка, после чего последнее слово становится пустым, а ссылка начинает указывать на первое слово в списке.
    3. Третий компонент добавляет прочитанную букву в конец последнего слова, после чего, быть может, перемещает ссылку на следующее за полученным слово в списке.
    4. Четвертый компонент выдает полученный индекс на выход.


    Эта архитектура построена в стиле "репозиторий" (см. следующую лекцию).


    увеличить изображение
    Рис. 6.4.  Архитектура индексатора в стиле репозитория

  • Определим поддерживаемые сценарии из выделенного набора.

    • Сценарий a.

      Этот сценарий прямо поддерживается второй архитектурой.

      Чтобы поддержать его в первой, необходимо внести изменения в оба компонента так, чтобы первый компонент мог пополнять промежуточный список, читая входной текст фраза за фразой, а второй — аналогичным способом пополнять результирующий упорядоченный список, вставляя туда поступающие ему на вход слова.


      Содержание  Назад  Вперед