Skip to content

Patterns

Boris Rozhkin edited this page May 22, 2017 · 2 revisions

Используемые шаблоны проектирования:

  1. Factory method (фабричный метод) (см. itemfactory.h) абстрактный класс. Задача породить конкретный модуль бизнес логики АСУ по его описанию. В модуле логики есть наследник данного класса специализирующий метод create_item, данный класс генерируется, генератором стаба-модуля по описанию в xml-файле

  2. Mediator (посредник) (см.tag.h class Tag_Service) класс-посредник через которого происходит обмен сообщениями. Без посредника пришлось бы реализовывать метод "каждый с каждым", что гораздо более накладно. Также большой плюс посредника - позволяет асинхронно передавать сообщения. Для этого в Tag_Service будет реализована неблокирующая очередь (но позже, для курса времени не хватает)

  3. Visitor (посетитель) (см.init_visitor.h, itemimpl.h, runner.cpp) При запуски системы АСУ очень часто возникает потребность выполнять различные действия по инициализации программный модулей, при этом в зависимости от сложности системы у одного модуля может быть более одной стадии инициализации. Стадия инициализации в общем случае это метод класса модуля, вызываемый после конструирования. Важно иметь детерминированный порядок выполнения стадий активации. В предыдущей версии движка количество стадий было 4-ре и реализованы они были вирутальными методами. Теперь появился класс инициализатор (Init_Visitor) который посещает каждый модуль АСУ, забирает оттуда указатель на метод класса в котором описана конкретная стадия запуска и вызывает их последовательно. Большой плюс снялось ограничение на количество стадий запуска у модуля - хоть 100500.

Clone this wiki locally