Обмен технологиями

Маячная башня битвы при Чиби — режим наблюдателя

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

«Когда война продлится три месяца, письмо из дома будет стоить десять тысяч золотых; если схема проектирования правильная, тысячи солдат будут действовать как единое целое».

В великолепной истории Трех Королевств Битва при Чиби, несомненно, была важной битвой, изменившей мир. В этом сражении огромную роль сыграла, казалось бы, простая, но решающая система – маячная башня. Напоминает ли вам эта древняя система связи шаблон наблюдателя в современном программном обеспечении? Сегодня давайте совершим путешествие сквозь тысячи лет и раскроем тайну режима наблюдателя из дыма маяковой башни.

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

Война бушует

В 208 году нашей эры Цао Цао повел свою армию на юг, намереваясь одним махом сравнять Цзяндун и объединить мир. Столкнувшись с грозной армией Цао, коалиция Сунь-Лю должна была составить тщательный план, чтобы победить сильных с помощью слабых.

«Если мы хотим своевременно отреагировать на действия Цао Цзюня, мы должны создать эффективную систему раннего предупреждения». Чжоу Юй нахмурился и задумался.

Чжугэ Лян слегка покачал веером из перьев и уверенно сказал: «По моему мнению, вдоль реки можно установить сигнальные башни. Как только враг будет обнаружен, маяки будут зажжены. Там, где поднимается дым, должны быть вражеские войска».

Глаза Чжоу Юя загорелись: «Чудесно! Таким образом, наша армия может отслеживать передвижения врага в любое время и быть готовой к любой опасности».

Таким образом, сигнальные башни стоят вдоль реки Янцзы, словно часовые. На каждой сигнальной башне круглосуточно дежурит специальный человек. Как только будет обнаружено движение армии Цао, сигнальный огонь будет немедленно зажжен.

Однажды стража сигнальной башни на передовой внезапно обнаружила следы передовых войск Цао Цзюня.

«Быстро! Зажгите маяк!» — крикнул охранник.

В одно мгновение густой дым поднялся в небо. Сразу после этого одна за другой зажглись вторая и третья сигнальные башни, и дымовые сигналы раздавались быстро, как домино.

В военной палатке у реки Чжоу Юй обсуждал военные дела с Чжугэ Ляном. Вдруг подбежал солдат:

«Докладывайте! На линии фронта горит сигнальный огонь, армия Цао прибыла!»

Чжоу Юй и Чжугэ Лян посмотрели друг на друга, улыбнулись и уверенно сказали: «Отдайте приказ и действуйте по плану!»

Анализ паттернов наблюдателя

Шаблон наблюдателя определяет отношение зависимости «один ко многим», позволяя нескольким объектам-наблюдателям одновременно контролировать определенный объект-субъект. Этот объект темы уведомляет все объекты-наблюдатели при изменении своего состояния, позволяя им автоматически обновляться.

В системе маяков Битвы при Чиби мы отчетливо видим тень режима наблюдателя:

  • Маячная вышка — объект наблюдения (Субъект)
  • Каждое воинское подразделение (например, штаб Чжоу Юя и Чжугэ Ляна) является наблюдателем.
  • Зажигание маячка – смена состояния
  • Передача дымовых сигналов является механизмом оповещения.

Давайте разберемся со структурой шаблона Observer, используя диаграмму классов:

изображение-20240707223121510

Код

Давайте используем Java для реализации этой системы маяков:

import java.util.ArrayList;
import java.util.List;

// 观察者接口
interface MilitaryUnit {
    void update(String message);
}

// 主题(烽火台)
class BeaconTower {
    private List<MilitaryUnit> observers = new ArrayList<>();
    private String message;

    public void attach(MilitaryUnit observer) {
        observers.add(observer);
    }

    public void detach(MilitaryUnit observer) {
        observers.remove(observer);
    }

    public void notify(String message) {
        this.message = message;
        for (MilitaryUnit observer : observers) {
            observer.update(message);
        }
    }

    public void signalEnemyMovement(String message) {
        System.out.println("烽火台: " + message);
        notify(message);
    }
}

// 具体观察者
class CommandCenter implements MilitaryUnit {
    private String name;

    public CommandCenter(String name) {
        this.name = name;
    }

    @Override
    public void update(String message) {
        System.out.println(name + " 收到消息: " + message);
    }
}

// 主类
public class ObserverPatternDemo {
    public static void main(String[] args) {
        BeaconTower beaconTower = new BeaconTower();

        CommandCenter zhouYu = new CommandCenter("周瑜");
        CommandCenter zhuGeLiang = new CommandCenter("诸葛亮");

        beaconTower.attach(zhouYu);
        beaconTower.attach(zhuGeLiang);

        beaconTower.signalEnemyMovement("曹军前锋已到达赤壁!");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

результат операции

烽火台: 曹军前锋已到达赤壁!
周瑜 收到消息: 曹军前锋已到达赤壁!
诸葛亮 收到消息: 曹军前锋已到达赤壁!
  • 1
  • 2
  • 3

Магия шаблона наблюдателя

Через систему маяков Битвы при Чиби мы можем увидеть несколько ключевых преимуществ режима наблюдателя:

  1. развязка : Beacon Tower (тема) не обязательно знать, какие военные подразделения (наблюдатели) за ней следят, а военным подразделениям не нужно знать внутреннюю реализацию Beacon Tower. Эта слабосвязанная конструкция повышает гибкость системы.
  2. Масштабируемость: Если вам нужно добавить новое подразделение реагирования (например, отдел логистики), вам нужно всего лишь создать нового наблюдателя и зарегистрировать его в Beacon Tower, не изменяя существующий код.
  3. Вещательная связь: сообщение может быть быстро передано нескольким получателям, как и огонь маяка, вся линия обороны может быстро узнать ситуацию противника.
  4. Адаптивный дизайн: шаблон наблюдателя очень подходит для реализации адаптивного дизайна системы. При изменении состояния все соответствующие части могут быть своевременно обновлены.

Заключение

Система маяков Чжугэ Ляна не только помогла выиграть битву при Чиби, но и раскрыла нам суть режима наблюдателя. В современной разработке программного обеспечения шаблон наблюдателя широко используется во многих областях, таких как графические пользовательские интерфейсы, системы обработки событий и службы push-сообщений.

Как говорится: «За тысячи миль мы можем победить, выработав стратегию». Если мы овладеем режимом наблюдателя, мы сможем создать быстро реагирующую и хорошо структурированную программную систему, которая останется непобедимой на постоянно меняющемся цифровом поле битвы.

В следующей главе мы продолжим наше путешествие по шаблонам проектирования и подробнее рассмотрим изысканное сочетание мудрости Трех Королевств и современного дизайна программного обеспечения. Следите за обновлениями!

Ссылка на оригинальный текст:https://offernow.cn
Помощник по обучению ИИ:https://aistar.cool