Шаблон реактора пояснюється у вікіпедії , і він занадто абстрактний. Чи можете ви описати цю закономірність більш конкретно? В ідеалі з фрагментами коду або діаграмами класів високого рівня, що описують деякі програми реакторної схеми.
Шаблон реактора пояснюється у вікіпедії , і він занадто абстрактний. Чи можете ви описати цю закономірність більш конкретно? В ідеалі з фрагментами коду або діаграмами класів високого рівня, що описують деякі програми реакторної схеми.
Відповіді:
Можливо, ви захочете перевірити оригінальний документ з описом: http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf
Шаблон проекту Reactor обробляє запити на обслуговування, які одночасно доставляються в додаток одним або кількома клієнтами. Кожна послуга в додатку може складатися з методів сервера і представлена окремим обробником подій, який відповідає за відправлення запитів, що стосуються конкретної послуги. Диспетчеризація обробників подій виконується диспетчером ініціації, який управляє зареєстрованими обробниками подій. Демультиплексування запитів на послуги виконується демультиплексором синхронних подій.
Реактор дозволяє ефективно обробляти декілька завдань, які блокують (скажімо через введення-виведення), використовуючи один потік. Реактор управляє пулом обробників та запускає цикл подій. Коли його викликають для виконання завдання, він пов'язує його з новим або вакантним обробником, роблячи його активним. Цикл подій (1) знаходить усі активні та розблоковані обробники (або делегує це реалізації диспетчера) (2) виконує кожен із цих знайдених обробників послідовно, поки вони не завершать або не досягнуть точки, де вони блокуються. Завершені обробники стають неактивними та вакантними для повторного використання, тоді як заблоковані активні обробники дають змогу продовжувати цикл подій. (3) Повторення з кроку (1)