I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Rhoqo ndidibana nabaphuhlisi abangeva ngemigaqo yeSOLID (thina uthethe ngazo ngokweenkcukacha apha. - Transl.) okanye inkqubo ejolise kwizinto (OOP), okanye uvile ngazo, kodwa ungazisebenzisi ekusebenzeni. Eli nqaku lichaza iinzuzo zemigaqo ye-OOP enceda umphuhlisi kumsebenzi wakhe wemihla ngemihla. Ezinye zazo ziyaziwa, ezinye azikho kakhulu, ngoko eli nqaku liya kuba luncedo kubo bobabini abaqalayo kunye nabaprogram abanamava.

Siyakhumbuza: kubo bonke abafundi beHabr - isaphulelo se-ruble se-10 xa ubhalisa kuyo nayiphi na ikhosi ye-Skillbox usebenzisa ikhowudi yokuphromotha ye-Habr.

I-Skillbox iyacebisa: Isifundo esikwi-intanethi "Umphuhlisi weJava".

YOMILE (Sukuziphinda)

Umgaqo olula, undoqo wayo ocacileyo kwigama: "Musa ukuphinda." Kumdwelisi wenkqubo, oku kuthetha imfuneko yokuphepha ikhowudi ephindwe kabini, kunye nethuba lokusebenzisa i-abstraction emsebenzini wabo.

Ukuba kukho amacandelo amabini aphindaphindiweyo kwikhowudi, kufuneka adibaniswe kwindlela enye. Ukuba ixabiso le-hardcoded lisetyenziswe ngaphezu kwexesha elilodwa, kuyafaneleka ukuba liguqulelwe kwisigxina sikawonkewonke.

Oku kuyimfuneko ukwenzela ukuba kube lula ikhowudi kwaye kube lula ukuyigcina, eyona njongo iphambili ye-OOP. Akufanele usebenzise ngokugqithisileyo umanyano nokuba, ekubeni ikhowudi efanayo ayiyi kudlula ukuqinisekiswa kunye ne-OrderId kunye ne-SSN.

Ukutshintsha Utshintsho

Uninzi lweemveliso zesoftware yeenkampani zihlala zivela. Oku kuthetha ukuba utshintsho kufuneka lwenziwe kwikhowudi, kufuneka luxhaswe. Unokwenza ubomi bakho bube lula ngokusebenzisa i-encapsulation. Oku kuya kukuvumela ukuba uvavanye ngokufanelekileyo kwaye ugcine isiseko sekhowudi yakho ekhoyo. Nanku umzekelo omnye.

Ukuba ubhala kwiJava, ngoko nika iindlela zabucala kunye neziguquguqukayo ngokungagqibekanga.

Umgaqo ovuliweyo/ovaliweyo

Lo mgaqo unokukhunjulwa ngokulula ngokufunda le ngxelo ilandelayo: β€œAmaziko esoftware (iiklasi, iimodyuli, imisebenzi, njl.njl.) kufuneka avulelwe ukwandiswa, kodwa avaliwe ukuguqulwa. Enyanisweni, oku kuthetha ukuba banokuvumela ukuziphatha kwabo ukuba kuguqulwe ngaphandle kokutshintsha ikhowudi yomthombo.

Umgaqo ubalulekile xa utshintsho kwikhowudi yomthombo lufuna ukuhlaziywa kwekhowudi, uvavanyo lweeyunithi, kunye nezinye iinkqubo. Ikhowudi elandela umgaqo ovulekileyo/ovaliweyo ayitshintshi xa yandiswa, ngoko ke kukho iingxaki ezimbalwa ngayo.

Nanku umzekelo wekhowudi ephula lo mgaqo.

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Ukuba kufuneka utshintshe into ethile kuyo, kuya kuthatha ixesha elininzi, kuba onke amacandelo ekhowudi anonxibelelwano kunye neqhekeza elifunwayo kuya kufuneka kutshintshwe.

Ngendlela, ukuvuleka-ukuvala enye yemigaqo ye-SOLID.

UMgaqo woXanduva oluNye (SRP)

Omnye umgaqo ovela kwisethi ye-SOLID. Ithi β€œkukho unobangela omnye obangela utshintsho eklasini.” Iklasi isombulula ingxaki enye kuphela. Inokuba neendlela ezininzi, kodwa nganye kuzo isetyenziselwa kuphela ukusombulula ingxaki eqhelekileyo. Zonke iindlela kunye neepropati kufuneka zisebenze oku kuphela.

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Ixabiso lalo mgaqo kukuba ukhulula ukudibanisa phakathi kwecandelo lesoftware yomntu kunye nekhowudi. Ukuba wongeza ngaphezulu kokusebenza kwesinye eklasini, yazisa ubudlelwane phakathi kwale misebenzi mibini. Ngaloo ndlela, ukuba utshintshe enye yazo, kukho ithuba eliphezulu lokutshabalalisa okwesibini, okudibaniswe neyokuqala. Kwaye oku kuthetha ukwandisa imijikelo yovavanyo ukwenzela ukuchonga zonke iingxaki kwangaphambili.

UMgaqo woGuquko wokuxhomekeka (DIP)

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Ngentla ngumzekelo wekhowudi apho i-AppManager ixhomekeke kwi-EventLogWriter, ethi yona idityaniswe ngokusondeleyo ne-AppManager. Ukuba ufuna indlela eyahlukileyo yokubonisa isaziso, nokuba kukutyhala, iSMS okanye i-imeyile, kufuneka utshintshe iklasi ye-AppManager.

Ingxaki ingasonjululwa kusetyenziswa i-DIP. Ke, endaweni ye-AppManager, sicela i-EventLogWriter, eya kungeniswa kusetyenziswa isakhelo.

I-DIP yenza kube lula ukutshintsha iimodyuli zomntu kunye nezinye ngokutshintsha imodyuli yokuxhomekeka. Oku kwenza ukuba kwenzeke ukutshintsha imodyuli enye ngaphandle kokuchaphazela ezinye.

Ukwakhiwa endaweni yelifa

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka aziKukho iindlela ezimbini eziphambili zokuphinda usebenzise ikhowudi: ilifa kunye nokwakhiwa, zombini zineenzuzo kunye nezingeloncedo zazo. Ngokuqhelekileyo eyesibini iyakhethwa kuba iguquguquka ngakumbi.

Ukuqulunqwa kukunika amandla okutshintsha ukuziphatha kweklasi ngexesha lokuqhuba ngokucwangcisa iimpawu zayo. Xa kusetyenziswa i-interfaces, i-polymorphism isetyenziswa, enika ukuphunyezwa okuguquguqukayo.

Nditsho neJava esebenzayo nguJoshua Bloch ucebisa ukuba ukhethe ukwakheka ngaphezu kwelifa.

Umgaqo-siseko woTshintsho kaBarbara Liskov (LSP)

Omnye umgaqo ovela kwi-SOLID toolkit. Ichaza ukuba ii-subtypes kufuneka zithathelwe indawo ye-supertype. Oko kukuthi, iindlela kunye nemisebenzi esebenza nge-superclass kufuneka ikwazi ukusebenza ngaphandle kweengxaki ngee-subclasses zayo.

I-LSP inxulunyaniswa nomthetho-siseko woxanduva olunye kunye nomthetho-siseko wokwabelana ngoxanduva. Ukuba iklasi ibonelela ngokusebenza ngakumbi kune-subclass, ngoko ke lo mva awuyi kuxhasa ezinye zemisebenzi, ukuphula lo mgaqo.

Nali iqhekeza lekhowudi ephikisana ne-LSP.

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Indawo (Uxande r) indlela ibala ummandla weRectangle. Inkqubo izakonakala emva kokuphumeza isikwere kuba isikwere asiloxande apha. Ngokomgaqo we-LSP, imisebenzi esebenzisa iireferensi kwiiklasi ezisisiseko kufuneka ikwazi ukusebenzisa izinto zeeklasi ezithathwe ngaphandle kwemiyalelo eyongezelelweyo.

Lo mgaqo, oyinkcazo ethile ye-subtype, yacetywa nguBarbara Liskov kwingqungquthela yenkomfa ye-1987 enesihloko esithi "Ukukhutshwa kweDatha kunye ne-Hierarchy," ngoko igama layo.

Umgaqo-siseko wokwahlula isiNxulumaniso (ISP)

Omnye umgaqo we-SOLID. Ngokutsho kwayo, ujongano olungasetyenziswanga akufuneki luphunyezwe. Ukulandela lo mgaqo kunceda inkqubo ukuba ihlale iguquguquka kwaye ifanelekile ukuguqulwa kwakhona xa utshintsho lwenziwa kwingqiqo yokusebenza.

Ngokuqhelekileyo, le meko yenzeka xa ujongano lunemisebenzi emininzi ngaxeshanye, kwaye umxhasi ufuna enye kuphela.

Ekubeni ukubhala i-interface ngumsebenzi onzima, ukuyitshintsha emva kokuba umsebenzi ugqityiwe ngaphandle kokuphula nantoni na kuya kuba ngumngeni.

Inzuzo yomgaqo we-ISP kwiJava kukuba zonke iindlela kufuneka ziphunyezwe kuqala, kwaye emva koko zingasetyenziselwa iiklasi. Ngoko ke, umgaqo wenza kube lula ukunciphisa inani leendlela.

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Ukucwangcisa ujongano, hayi ukuphunyezwa

Yonke into elapha icacile kwisihloko. Ukusebenzisa lo mgaqo kukhokelela ekudalweni kwekhowudi eguquguqukayo enokusebenza kunye naluphi na ukuphunyezwa okutsha kwe-interface.

Kufuneka usebenzise uhlobo lojongano lwezinto eziguquguqukayo, iintlobo zokubuyisela, okanye uhlobo lwengxoxo. Umzekelo usebenzisa iSuperClass kuneSubClass.

Yiyo i:

Uluhlu lwamanani= getNumbers();

Kodwa hayi:

Amanani e-ArrayList = getNumbers ();

Nantsi ukuphunyezwa okubonakalayo koku kuxoxwe ngasentla.

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Umgaqo wogunyaziso

Umzekelo oqhelekileyo ziindlela ezilinganayo () kunye ne-hashCode () kwiJava. Xa kuyimfuneko ukuthelekisa izinto ezimbini, eli nyathelo linikezelwa kwiklasi ehambelanayo endaweni yomxhasi omnye.

Inzuzo yomgaqo kukuba akukho kuphinda-phindwa kwekhowudi kwaye kulula ukutshintsha ukuziphatha. Ikwasebenza nakubathunywa besiganeko.

I-10 yeNgcaciso yeNkqubo eJoliswe kwiNjongo wonke uMphuhlisi kufuneka azi

Yonke le migaqo ikuvumela ukuba ubhale ikhowudi eguquguqukayo, enhle kwaye enokwethenjelwa kunye nokubambisana okuphezulu kunye nokudibanisa okuphantsi. Ewe, ithiyori ilungile, kodwa ukuze umphuhlisi asebenzise ulwazi alufumeneyo, ukuziqhelanisa kuyafuneka. Nje ukuba uphumelele imigaqo ye-OOP, inyathelo lakho elilandelayo inokuba kukufunda iipateni zoyilo ukusombulula iingxaki zophuhliso lwesoftware.

I-Skillbox iyacebisa:

umthombo: www.habr.com

Yongeza izimvo