Pagdisenyo ng Isang Modular Laging System na may Kasuutan ng Responsibilidad

Sa paggawa ng software, mahalaga ang epektibong pagtotroso para sa mga debucting at pagsubaybay ng mga aplikasyon.Ang Chain of Responsibility pattern ay nagbibigay ng isang naibabagay na paraan upang magdisenyo ng isang modular na sistema ng pagtotroso na maaaring humawak ng iba't ibang antas ng log at format nang walang hadlang.

Ano ang Tanikala ng Responsibilidad?

Ang Chain of Responsibility pattern ay isang disenyong pang-ugali na nagpapahintulot sa isang bagay na maipasa ang isang kahilingan sa kahabaan ng isang kadena ng mga humahawak hanggang sa hawakan ito ng isa sa kanila.

Pagkakapit ng Parisan sa Paninirang - Puri

Sa isang sistema ng pagtotroso, ang bawat handler ay maaaring kumatawan sa iba't ibang antas ng troso, gaya ng DEBUG, INFO, BABALA, ERROR, o STIKAL. Kapag nalikha ang isang mensaheng log, naglalakbay ito sa kadena hanggang sa maabot nito ang angkop na handler na nagpoproseso nito.

Pagdisenyo sa Sistema ng Pag - eenggular na Lagging

Upang ipatupad ang padrong ito, bigyang kahulugan ang isang baseng uring handler na may pagtukoy sa susunod na handler.Ang bawat espesipikong handler ay nagmamana mula sa baseng uring ito at nai-iiba ang pamamaraan upang maproseso ang mga mensaheng log batay sa kalubhaan.

Narito ang isang pinasimpleng halimbawa:

class LogHandler {
 constructor(next) {
 this.next = next;
 }

 handle(logLevel, message) {
 if (this.next) {
 this.next.handle(logLevel, message);
 }
 }
}

class ErrorHandler extends LogHandler {
 handle(logLevel, message) {
 if (logLevel === 'ERROR' || logLevel === 'CRITICAL') {
 console.log(`[${logLevel}] ${message}`);
 } else {
 super.handle(logLevel, message);
 }
 }
}

class InfoHandler extends LogHandler {
 handle(logLevel, message) {
 if (logLevel === 'INFO') {
 console.log(`[INFO] ${message}`);
 } else {
 super.handle(logLevel, message);
 }
 }
}

// Setup chain
const errorHandler = new ErrorHandler(null);
const infoHandler = new InfoHandler(errorHandler);

// Usage
infoHandler.handle('ERROR', 'An error occurred.');
infoHandler.handle('INFO', 'Informational message.');

Ang setup na ito ay nagpapangyari sa pagdaragdag ng bagong mga handler, gaya ng sa mga antas ng DEBUG o BABALA, ginagawa ang sistema ng pagtotroso na lubhang modular at madaling makibagay.

Mga Pakinabang ng Paggamit ng Kasuutan ng Pananagutan sa Paninirang - Puri

  • Flexility: Easily add o alisin ang mga handler nang hindi naaapektuhan ang ibang bahagi ng sistema.
  • [[Papares ng mga Bagay: Ang bawat handler ay namamahala sa espesipikong antas ng log o format.
  • [Talaksan: Ang mga bagong katangian ng pagpoproseso ng log ay maaaring ma-ugnay nang maayos.
  • Katatagan: Malinaw na istrakturang samplifies debuilng at mga update.

Pagsasaayos

Ang Chain of Responsibility pattern ay nagbibigay ng isang eleganteng solusyon para sa paglikha ng isang modular, naibabagay na sistema ng pagtotroso. sa pamamagitan ng pag-iiba ng log na humahawak ng lohika at nagpapahintulot ng madaling pagpapalawig, tumutulong ito sa mga developer na gumawa ng matatag na mga aplikasyon na maaaring umangkop sa mga kahilingan sa evolving.