Partage de technologie

La tour phare de la bataille de Chibi - Mode Observateur

2024-07-12

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

"Lorsque la guerre dure trois mois, une lettre de chez soi vaut dix mille pièces d'or ; si le modèle de conception est correct, des milliers de soldats agiront comme une seule personne."

Dans la magnifique histoire des Trois Royaumes, la bataille de Chibi fut sans aucun doute une bataille importante qui a changé le monde. Dans cette bataille, un système apparemment simple mais crucial a joué un rôle énorme : la tour de balise. Cet ancien système de communication vous rappelle-t-il le modèle d'observateur dans la conception de logiciels modernes ? Aujourd'hui, voyageons à travers des milliers d'années et dévoilons le mystère du mode observateur depuis la fumée de la tour phare.

Des nuages ​​de guerre s'élèvent au bord de la rivière Chibi,
Une fois la guerre éclatée, le monde entier le saura.
Observer les changements le cas échéant,
Battez l'ennemi et protégez le pays d'un seul geste.

La guerre fait rage

En 208 après JC, Cao Cao mena son armée vers le sud, avec l'intention d'aplatir Jiangdong et d'unifier le monde d'un seul coup. Face à l'armée menaçante de Cao, la coalition Sun-Liu a dû élaborer des plans minutieux pour vaincre les forts avec les faibles.

"Si nous voulons répondre aux mouvements de Cao Jun en temps opportun, nous devons construire un système d'alerte précoce efficace." Zhou Yu fronça les sourcils et réfléchit.

Zhuge Liang secoua légèrement son éventail en plumes et dit avec assurance : « À mon avis, des tours de balise peuvent être installées le long de la rivière. Une fois l'ennemi découvert, les balises seront allumées. Là où la fumée monte, il doit y avoir des troupes ennemies.

Les yeux de Zhou Yu s'illuminèrent : "Merveilleux ! De cette façon, notre armée peut suivre les mouvements de l'ennemi à tout moment et se préparer à tout danger."

De cette façon, les tours de balise se dressent comme des sentinelles le long du fleuve Yangtze. Chaque tour de balise est équipée d'une personne dédiée en service jour et nuit. Une fois le mouvement de l'armée de Cao découvert, le feu de balise sera allumé immédiatement.

Un jour, les gardes de la tour phare au premier plan ont soudainement découvert des traces des troupes avancées de Cao Jun.

"Vite ! Allumez la balise !", a crié le garde.

En un instant, une épaisse fumée monta dans le ciel. Immédiatement après, les deuxième et troisième tours de balise ont été allumées l'une après l'autre et les signaux de fumée ont été transmis rapidement comme des dominos.

Dans la tente militaire au bord de la rivière, Zhou Yu discutait d'affaires militaires avec Zhuge Liang. Soudain, un soldat se précipita :

"Au rapport ! Les tirs de balises montent sur la ligne de front, l'armée de Cao est arrivée !"

Zhou Yu et Zhuge Liang se sont regardés et ont souri et ont dit avec confiance : « Passez l'ordre et agissez selon le plan !

Analyse du modèle d'observateur

Le modèle d'observateur définit une relation de dépendance un-à-plusieurs, permettant à plusieurs objets observateurs de surveiller un certain objet en même temps. Cet objet sujet informe tous les objets observateurs lorsque son état change, leur permettant de se mettre à jour automatiquement.

Dans le système de balise de la Bataille de Chibi, on voit bien l'ombre du mode observateur :

  • La tour de balise est le sujet observé (Sujet)
  • Chaque unité militaire (comme le quartier général de Zhou Yu et Zhuge Liang) est un observateur.
  • L'allumage de la balise est un changement d'état
  • La transmission de signaux de fumée est le mécanisme de notification

Comprenons la structure du modèle Observer à l'aide d'un diagramme de classes :

image-20240707223121510

Code

Utilisons Java pour implémenter ce système de balises :

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

résultat de l'opération

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

La magie du modèle d'observateur

A travers le système de balise de la Bataille de Chibi, nous pouvons constater plusieurs avantages clés du mode observateur :

  1. découplage : Beacon Tower (thème) n'a pas besoin de savoir quelles unités militaires (observateurs) la surveillent, et les unités militaires n'ont pas besoin de connaître la mise en œuvre interne de Beacon Tower. Cette conception faiblement couplée améliore la flexibilité du système.
  2. Évolutivité: Si vous devez ajouter une nouvelle unité d'intervention (comme le service logistique), il vous suffit de créer un nouvel observateur et de l'enregistrer sur Beacon Tower sans modifier le code existant.
  3. Communications diffusées: Un message peut être rapidement transmis à plusieurs destinataires, tout comme les tirs de balises, toute la ligne de défense peut rapidement connaître la situation de l'ennemi.
  4. Conception réactive: Le modèle d'observateur est très approprié pour mettre en œuvre une conception de système réactive. Lorsque l'état change, toutes les parties pertinentes peuvent être mises à jour à temps.

Conclusion

Le système de balise de Zhuge Liang a non seulement aidé à remporter la bataille de Chibi, mais nous a également révélé l'essence du mode observateur. Dans le développement de logiciels modernes, le modèle d'observateur est largement utilisé dans de nombreux domaines tels que les interfaces utilisateur graphiques, les systèmes de traitement d'événements et les services de transmission de messages.

Comme le dit le proverbe : « À des milliers de kilomètres, nous pouvons gagner en élaborant une stratégie. » Si nous maîtrisons le mode observateur, nous pouvons construire un système logiciel réactif et bien structuré qui restera invincible sur le champ de bataille numérique en constante évolution.

Dans le prochain chapitre, nous continuerons notre voyage vers les modèles de conception et explorerons davantage la combinaison exquise de la sagesse des Trois Royaumes et de la conception logicielle moderne. Restez à l'écoute!

Texte original de référence :https://offernow.cn
Assistant d'apprentissage de l'IA :https://aistar.cool