2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
"Kun sota jatkuu kolme kuukautta, kirje kotoa on kymmenentuhannen kullan arvoinen; jos suunnittelumalli on oikea, tuhannet joukot toimivat yhtenä."
Kolmen kuningaskunnan upeassa historiassa Chibin taistelu oli epäilemättä tärkeä taistelu, joka muutti maailman. Tässä taistelussa näennäisen yksinkertaisella mutta ratkaisevalla järjestelmällä oli valtava rooli - majakkatornilla. Muistuttaako tämä ikivanha viestintäjärjestelmä sinua nykyaikaisen ohjelmistosuunnittelun tarkkailijakuviosta? Tänään matkustakaamme tuhansia vuosia ja paljastakaamme tarkkailijatilan mysteeri majakkatornin savusta.
Sotapilvet nousevat Chibi-joen varrelle,
Kun sota syttyy, koko maailma tietää.
Tarkkaile muutoksia tarpeen mukaan,
Voita vihollinen ja suojele maata yhdellä liikkeellä.
Vuonna 208 jKr Cao Cao johti armeijaansa etelään aikoen tasoittaa Jiangdongin ja yhdistää maailman yhdellä iskulla. Uhkaavaa Caon armeijaa vastaan Sun-Liu-koalition täytyi tehdä huolellisia suunnitelmia voittaakseen vahvat heikoilla.
"Jos haluamme vastata Cao Junin liikkeisiin ajoissa, meidän on rakennettava tehokas ennakkovaroitusjärjestelmä."
Zhuge Liang pudisti höyhenviuhkaansa kevyesti ja sanoi luottavaisesti: "Mielestäni joen varrelle voidaan pystyttää majakkatorneja. Kun vihollinen on löydetty, majakat syttyvät. Siellä missä savu nousee, siellä täytyy olla vihollisjoukkoja."
Zhou Yun silmät loistivat: "Ihanaa! Tällä tavalla armeijamme voi seurata vihollisen liikkeitä milloin tahansa ja olla varautunut kaikkiin vaaroihin."
Tällä tavalla majakkatornit seisovat vartiotorneina Jangtse-joen varrella. Jokaisessa majakkatornissa on päivä- ja yöpäivystys, kun Caon armeijan liike havaitaan, majakka sytytetään välittömästi.
Eräänä päivänä majakkatornin vartijat eturintamassa löysivät yhtäkkiä jälkiä Cao Junin etujoukoista.
"Nopeasti! Sytytä majakka!" huusi vartija.
Hetkessä taivaalle nousi paksu savu. Välittömästi tämän jälkeen toinen ja kolmas majakkatorni sytytettiin peräkkäin ja savumerkit ohitettiin nopeasti kuin domino.
Armeijateltassa joen varrella Zhou Yu keskusteli sotilasasioista Zhuge Liangin kanssa. Yhtäkkiä sotilas kiiruhti luokse:
"Raportoi! Majakkatuli on etulinjassa, Caon armeija on saapunut!"
Zhou Yu ja Zhuge Liang katsoivat toisiaan ja hymyilivät ja sanoivat luottavaisesti: "Lähetä käsky ja toimi suunnitelman mukaan!"
Havainnointikuvio määrittää yksi-moneen riippuvuussuhteen, jolloin useat tarkkailijaobjektit voivat tarkkailla tiettyä kohdeobjektia samanaikaisesti. Tämä aiheobjekti ilmoittaa kaikille tarkkailijaobjekteille, kun sen tila muuttuu, jolloin ne voivat päivittää itsensä automaattisesti.
Chibin taistelun majakkajärjestelmässä näemme selvästi tarkkailijatilan varjon:
Ymmärrämme Observer-mallin rakennetta luokkakaavion avulla:
Käytämme Javaa tämän majakkajärjestelmän toteuttamiseen:
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("曹军前锋已到达赤壁!");
}
}
烽火台: 曹军前锋已到达赤壁!
周瑜 收到消息: 曹军前锋已到达赤壁!
诸葛亮 收到消息: 曹军前锋已到达赤壁!
Chibin taistelun majakkajärjestelmän kautta voimme nähdä useita havainnointitilan keskeisiä etuja:
Zhuge Liangin majakkajärjestelmä ei vain auttanut voittamaan Chibin taistelua, vaan paljasti meille myös tarkkailijatilan olemuksen. Nykyaikaisessa ohjelmistokehityksessä tarkkailijakuviota käytetään laajasti monilla aloilla, kuten graafisissa käyttöliittymissä, tapahtumien käsittelyjärjestelmissä ja viestien push-palveluissa.
Kuten sanonta kuuluu: "Tuhansien kilometrien päässä voimme voittaa strategioiden avulla."
Seuraavassa luvussa jatkamme suunnittelumallien matkaamme ja tutkimme lisää Kolmen kuningaskunnan viisauden ja modernin ohjelmistosuunnittelun hienoa yhdistelmää. Pysy kanavalla!
Viite alkuperäinen teksti:https://offernow.cn
AI-oppimisavustaja:https://aistar.cool