Isikhathi esiningi ngihlangana nonjiniyela abangakaze bezwe ngezimiso ze-SOLID (we
Siyakukhumbuza: kubo bonke abafundi be-Habr - isaphulelo sama-ruble angu-10 lapho ubhalisa kunoma yisiphi isifundo se-Skillbox usebenzisa ikhodi yephromoshini ye-Habr.
I-Skillbox iyancoma: Isifundo se-inthanethi semfundo
"Unjiniyela we-Java" .
ZOMA (Ungaziphindaphindi)
Isimiso esilula, ingqikithi yaso ecacile egameni: "Ungaziphindi." Kumhleli, lokhu kusho isidingo sokugwema ikhodi eyimpinda, kanye nethuba lokusebenzisa i-abstract emsebenzini wabo.
Uma kunezigaba ezimbili eziphindaphindayo kukhodi, kufanele zihlanganiswe zibe indlela eyodwa. Uma inani lekhodi eqinile lisetshenziswa izikhathi ezingaphezu kwesisodwa, kufanelekile ukuliguqulela ekubeni lingaguquki esidlangalaleni.
Lokhu kuyadingeka ukuze kwenziwe lula ikhodi futhi kwenziwe kube lula ukuyigcina, okuwumgomo oyinhloko we-OOP. Akumele futhi usebenzise inyunyana ngokweqile, njengoba ikhodi efanayo ngeke iphumelele ukuqinisekiswa kukho kokubili i-OrderId ne-SSN.
Ukuhlanganisa Izinguquko
Imikhiqizo yesoftware yezinkampani eziningi ishintsha njalo. Lokhu kusho ukuthi izinguquko zidinga ukwenziwa kukhodi, idinga ukusekelwa. Ungenza impilo yakho ibe lula ngokusebenzisa i-encapsulation. Lokhu kuzokuvumela ukuthi uhlole ngokuphumelelayo futhi ugcine isisekelo sekhodi yakho ekhona.
Uma ubhala ku-Java, ke
Umgomo ovuliwe/ovaliwe
Lesi simiso singakhunjulwa kalula ngokufunda isitatimende esilandelayo: βIzinkampani zesofthiwe (amakilasi, amamojula, imisebenzi, njll.) kufanele zivulelwe ukunwetshwa, kodwa zivaliwe ukuze zilungiswe.β Empeleni, lokhu kusho ukuthi bangavumela ukuziphatha kwabo ukuthi kushintshwe ngaphandle kokushintsha ikhodi yomthombo.
Umgomo ubalulekile uma izinguquko kukhodi yomthombo zidinga ukubuyekezwa kwekhodi, ukuhlolwa kweyunithi, nezinye izinqubo. Ikhodi elandela umgomo ovulekile/ovaliwe ayishintshi uma inwetshiwe, ngakho-ke kunezinkinga ezimbalwa ngayo.
Nasi isibonelo sekhodi ephula lesi simiso.
Uma udinga ukushintsha okuthile kuyo, kuzothatha isikhathi esiningi, ngoba zonke izigaba zekhodi ezinokuxhumana nesiqephu esifunayo kuzodingeka zishintshwe.
Ngendlela, ukuvuleka-ukuvala kungenye yezimiso ze-SOLID.
I-Single Responsibility Principle (SRP)
Esinye isimiso esivela kusethi ye-SOLID. Ithi βkunembangela eyodwa ebangela ushintsho ekilasini.β Ikilasi lixazulula inkinga eyodwa kuphela. Kungase kube nezindlela eziningana, kodwa ngayinye yazo isetshenziselwa ukuxazulula inkinga evamile. Zonke izindlela nezakhiwo kufanele zisebenze lokhu kuphela.
Inani lalesi simiso ukuthi likhulula ukuhlangana phakathi kwengxenye yesofthiwe ngayinye kanye nekhodi. Uma wengeza ukusebenza okungaphezu kokukodwa ekilasini, sethula ubudlelwano phakathi kwale misebenzi emibili. Ngakho-ke, uma ushintsha omunye wabo, kunethuba elikhulu lokucekela phansi okwesibili, okuxhunywe kweyokuqala. Futhi lokhu kusho ukwandisa imijikelezo yokuhlola ukuze kukhonjwe zonke izinkinga kusenesikhathi.
I-Dependency Inversion Principle (DIP)
Ngenhla kunesibonelo sekhodi lapho i-AppManager incike ku-EventLogWriter, yona ehambisana eduze ne-AppManager. Uma udinga indlela ehlukile yokubonisa isaziso, kungaba i-push, i-SMS noma i-imeyili, udinga ukushintsha ikilasi le-AppManager.
Inkinga ingaxazululwa kusetshenziswa i-DIP. Ngakho, esikhundleni se-AppManager, sicela i-EventLogWriter, ezofakwa kusetshenziswa uhlaka.
I-DIP yenza kube lula ukushintsha amamojula ngamanye ngokushintsha imojula yokuncika. Lokhu kwenza kube nokwenzeka ukushintsha imojuli eyodwa ngaphandle kokuthikameze ezinye.
Ukuqanjwa esikhundleni sefa
Kunezindlela ezimbili eziyinhloko zokusebenzisa kabusha ikhodi: ifa nokwakheka, kokubili okunobuhle nokubi. Imvamisa eyesibili iyakhethwa ngoba iguquguquka kakhulu.
Ukwakheka kukunikeza amandla okushintsha ukuziphatha kwekilasi ngesikhathi sokuqalisa ngokusetha izici zalo. Lapho kusetshenziswa ukuxhumana, kusetshenziswa i-polymorphism, enikeza ukuqaliswa okuvumelana nezimo.
Ngisho neJava Esebenzayo kaJoshua Bloch yeluleka ukukhetha ukwakheka esikhundleni sefa.
I-Barbara Liskov Substitution Principle (LSP)
Omunye umgomo ovela kukhithi yamathuluzi ye-SOLID. Ithi ama-subtypes kufanele athathelwe indawo ye-supertype. Okusho ukuthi, izindlela nemisebenzi esebenza ne-superclass kufanele ikwazi ukusebenza ngaphandle kwezinkinga ngezigaba zayo ezingaphansi.
I-LSP ihlotshaniswa nakho kokubili umgomo wokuzibophezela okukodwa kanye nomgomo wesibopho esabiwe. Uma ikilasi lihlinzeka ngokusebenza okwengeziwe kunesigaba esingaphansi, khona-ke lesi sakamuva ngeke sisekele okunye ukusebenza, okuphula lesi simiso.
Nali ucezu lwekhodi oluphikisana ne-LSP.
Indlela yendawo(Rectangle r) ibala indawo kanxande. Uhlelo luzophahlazeka ngemva kokusebenzisa isikwele ngoba isikwele asiwona unxande lapha. Ngokomgomo we-LSP, imisebenzi esebenzisa izinkomba zamakilasi ayisisekelo kufanele ikwazi ukusebenzisa izinto zamakilasi atholiwe ngaphandle kwemiyalo eyengeziwe.
Lesi simiso, esiyincazelo ethile yohlobo oluncane, sahlongozwa nguBarbara Liskov engqungqutheleni yango-1987 enesihloko esithi βData Abstraction and Hierarchy,β yingakho igama layo.
I-Interface Split Principle (ISP)
Esinye isimiso se-SOLID. Ngokusho kwayo, i-interface engasetshenziswanga akufanele isetshenziswe. Ukulandela lesi simiso kusiza isistimu ukuthi ihlale iguquguquka futhi ifanele ukwenziwa kabusha lapho izinguquko zenziwa kumqondo wokusebenza.
Imvamisa, lesi simo senzeka lapho isikhombimsebenzisi siqukethe imisebenzi eminingana ngasikhathi sinye, futhi iklayenti lidinga eyodwa kuphela yazo.
Njengoba ukubhala isikhombimsebenzisi kuwumsebenzi onzima, ukuwushintsha ngemva kokuba umsebenzi usuqediwe ngaphandle kokuphula noma yini kuyoba inselele.
Inzuzo yesimiso se-ISP ku-Java ukuthi zonke izindlela kufanele zisetshenziswe kuqala, futhi ngemva kwalokho zingasetshenziswa ngamakilasi. Ngakho-ke, isimiso senza kube nokwenzeka ukunciphisa inani lezindlela.
Ukuhlelela isixhumi esibonakalayo, hhayi ukuqaliswa
Konke lapha kucacile egameni. Ukusebenzisa lesi simiso kuholela ekwakhiweni kwekhodi evumelana nezimo engasebenza nanoma yikuphi ukuqaliswa okusha kwesixhumi esibonakalayo.
Kufanele usebenzise uhlobo lwesixhumi esibonakalayo kokuguquguqukayo, izinhlobo zokubuyisela, noma uhlobo lwe-agumenti yendlela. Isibonelo sisebenzisa i-SuperClass kune-SubClass.
Leyo:
Uhlu lwezinombolo= getNumbers();
Kodwa hhayi:
Izinombolo ze-ArrayList = getNumbers();
Nakhu ukuqaliswa okungokoqobo kwalokhu okukhulunywe ngakho ngenhla.
Umgomo wokudlulisa amandla
Isibonelo esivamile izindlela ezilinganayo () kanye ne-hashCode() ku-Java. Uma kudingekile ukuqhathanisa izinto ezimbili, lesi senzo sidluliselwa ekilasini elihambisanayo esikhundleni seklayenti elilodwa.
Inzuzo yalesi simiso ukuthi akukho ukuphindaphinda kwekhodi futhi kulula ukushintsha ukuziphatha. Isebenza nasekudlulisweni komcimbi.
Zonke lezi zimiso zikuvumela ukuthi ubhale ikhodi eguquguqukayo, enhle futhi enokwethenjelwa ngokuhlangana okuphezulu nokuhlanganisa okuphansi. Yebo, ithiyori muhle, kodwa ukuze umthuthukisi asebenzise ulwazi alutholile, ukuzijwayeza kuyadingeka. Uma usufunde izimiso ze-OOP, isinyathelo sakho esilandelayo singaba ukufunda amaphethini wokuklama ukuze uxazulule izinkinga ezivamile zokuthuthukiswa kwesofthiwe.
I-Skillbox iyancoma:
- Isifundo esiwusizo
"I-Mobile Developer PRO" .- Kusetshenziswe izifundo ze-inthanethi
"Umhlaziyi wedatha kuPython" .- Isifundo sokwenza iminyaka emibili
"Ngingunjiniyela wewebhu we-PRO" .
Source: www.habr.com