Ang Chain of Responsibility pattern ay isang pang-ugaling disenyo na nagpapahintulot sa iyo na makapasa sa isang kahilingan sa kahabaan ng isang kadena ng mga humahawak. Ang dibuhong ito ay partikular na kapaki-pakinabang sa paglikha ng mga indibidwal at ma-transmit na data fealation pipelines, kung saan ang mga multiple na adficial steps ay maaaring idagdag, alisin, o muling ayusin nang madali.
Pag - unawa sa Tanikala ng Halimbawa ng Pananagutan
Ang pangunahing ideya sa likod ng padrong ito ay ang pag-iiscouple sa nagpadala ng isang kahilingan mula sa mga tagatanggap nito sa pamamagitan ng pagbibigay ng higit sa isang bagay ng isang pagkakataon upang hawakan ang kahilingan. Ang mga bagay ay inuugnay sa isang kadena, at ang bawat isa ay nagpapasiya kung iproseso o ipapasa ito.
Pag - aalis ng Isang Bandila
Upang ipatupad ang isang afessionalation pipeline, lumikha ng isang serye ng mga factor class, bawat isa ay responsable sa isang espesipikong tuntunin ng authoration. Ang mga authors na ito ay magkakaugnay, na bumubuo ng isang kadena kung saan ang data ay dumadaan. Kung ang isang afessionator ay naka-detekta ng hindi tanggap na datos, maaari nitong pigilan ang proseso o hawakan ang pagkakamali alinsunod dito.
Paglikha ng Interface ng Elektor
Ipaliwanag ang isang karaniwang paraan para matiyak na hindi pabagu - bago ang lahat ng lehitimong paraan.
Halimbawa sa PHP:
[[[[[[[[
bishbsp; pampublikong tungkulin setNext(Validator $validator): voucher;
] [p]p; platinbsp; pampublikong tungkulin($data): bool;
Mga Konkretong Tagapagpaganap
Halimbawa, ang bawat kongkretong aficiator ay gumagamit ng mga kasangkapang pang - experimentator.
[[Fb ⁇ b ⁇ n][C.p ⁇ p ⁇ p ⁇ p ⁇ p;[C.p ⁇ p ⁇ p ⁇ d];[[[C][[[C];[[C]] [[C.ppppp;[C.ppp:[[C];[[C] [[8] [[T] [[T];[p];[p]:[p] [[p] [[p];[p] [[p]:[p] [[p];[p] [[p];[p]:[5][p] [[T;[p]:[T;[C. ⁇
[[[p;[[[d]p;[[[dp;pp; pləbsp;pp; return $this->nextValidator->validate($data);[[FL]p;pn &np;pn;pn[p]:pn[p;p ⁇ pp;pppppppppppppppppp:[T];ppppppppppppppppppppppppppppppppp:[[pppppppppppppppp;[[[[pp;pppppppppppppppppppppppppppppppp:[[[[[[pppppppp:[[[[[[[[[pppppppppppp
Pagtatayo ng Isang Madaling - Mabagay na Tanikala
Upang makagawa ng isang afession pipeline, instantia ang mga bagay na may bisa at pagdugtungin ang mga ito gamit ang setNext method.Ito ay nagbibigay-daan sa dynamic configuration na mga hakbang ng harmonya batay sa espesipikong mga kahilingan.
Halimbawa:
$notEmptyValidator = bagong NotEmptyValidator();
$emailValalisador = bagong EmailValidator();
$notEmptyValidator->setNext($emailValidator);
Tinitiyak ng setup na ito na ang impormasyon ay unang susuriin para sa kahungkagan, pagkatapos ay binibigyang - bisa bilang isang email kung ang unang pagsusuri ay dumaraan.
Mga Pakinabang ng Paggamit ng Parisan
- Madaling makibagay at dinamikong mga tubong pang - experimentasyon
- Madaling idagdag, alisin, o ayusing muli ang mga hakbang na may bisa
- Dekopoples faciation logic mula sa pagproseso ng datos
- Ang kodigo ay nagpapanatili at madaling makuha
Sa pagpapatupad ng Chain of Responsibility pattern, ang mga developer ay maaaring lumikha ng matatag at madaling makibagay na mga sistema ng data na nagbibigay ng bisa sa iba't ibang mga pangangailangan sa pagkakapit.