10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Ọtụtụ mgbe m na-ezute ndị mmepe na-anụbeghị maka ụkpụrụ SOLID (anyị kwuru banyere ha n'uju ebe a. - Transl.) ma ọ bụ mmemme dabere na ihe (OOP), ma ọ bụ nụla maka ha, mana ejila ha eme ihe. Edemede a na-akọwa uru nke ụkpụrụ OOP nke na-enyere onye nrụpụta aka na ọrụ ya kwa ụbọchị. Ụfọdụ n'ime ha maara nke ọma, ndị ọzọ abụghị nke ukwuu, ya mere isiokwu ahụ ga-aba uru maka ndị mbido na ndị mmemme nwere ahụmahụ.

Anyị na -echetara: maka ndị na-agụ Habr niile - ego 10 ruble mgbe ị na-edebanye aha na nkuzi Skillbox ọ bụla site na iji koodu nkwado Habr.

Skillbox na-atụ aro: Usoro nkuzi n'ịntanetị "Onye nrụpụta Java".

Akọrọ (Emegharịa onwe gị ọzọ)

Ụkpụrụ dị mfe dị mfe, isi okwu ya doro anya site na aha ahụ: "Emeghachila onwe gị." Maka onye mmemme, nke a pụtara na ọ dị mkpa iji zere koodu oyiri, yana ohere iji abstraction na ọrụ ha.

Ọ bụrụ na enwere akụkụ abụọ ugboro ugboro na koodu ahụ, a ga-ejikọta ha na otu usoro. Ọ bụrụ na ejiri uru koodu siri ike mee ihe ihe karịrị otu ugboro, ọ bara uru ịtụgharị ya na ọhaneze mgbe niile.

Nke a dị mkpa iji mee ka koodu ahụ dị mfe ma mee ka ọ dị mfe ịnọgide na-enwe, nke bụ isi ihe mgbaru ọsọ nke OOP. I kwesịghị iji otu otu ahụ emebiga ihe ókè, ebe ọ bụ na otu koodu ahụ agaghị agafe nkwenye na OrderId na SSN.

Na-eme mgbanwe mgbanwe

Ngwa ngwa ọtụtụ ụlọ ọrụ na-agbanwe mgbe niile. Nke a pụtara na ekwesịrị ime mgbanwe na koodu ahụ, ọ kwesịrị ịkwado ya. Ị nwere ike ime ka ndụ gị dịkwuo mfe site na iji encapsulation. Nke a ga-enye gị ohere ịnwale ma dokwaa ntọala koodu dị adị gị. Nke a bụ otu ihe atụ.

Ọ bụrụ na ị na-ede na Java, mgbe ahụ kenye ụzọ nzuzo na mgbanwe na ndabara.

Ụkpụrụ mepere emepe/emechi

Enwere ike icheta ụkpụrụ a n'ụzọ dị mfe site n'ịgụ nkwupụta na-esonụ: "Ụlọ ọrụ software (klas, modul, ọrụ, wdg) kwesịrị imeghe maka ndọtị, ma mechie maka mgbanwe." Na omume, nke a pụtara na ha nwere ike ikwe ka a gbanwee omume ha na-agbanweghị koodu isi mmalite.

Ụkpụrụ dị mkpa mgbe mgbanwe na koodu isi chọrọ ngbanwe koodu, nyocha otu, na usoro ndị ọzọ. Koodu na-agbaso ụkpụrụ mepere emepe/emechi anaghị agbanwe mgbe agbatịchara, yabụ enwere nsogbu dị obere na ya.

Nke a bụ ọmụmaatụ koodu na-emebi ụkpụrụ a.

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Ọ bụrụ na ịchọrọ ịgbanwe ihe dị na ya, ọ ga-ewe oge buru ibu, ebe ọ bụ na a ga-agbanwe akụkụ niile nke koodu ahụ nwere njikọ na mpempe akwụkwọ achọrọ.

Site n'ụzọ, imeghe-mmechi bụ otu n'ime ụkpụrụ nke SOLID.

Ụkpụrụ Ọrụ Otu (SRP)

Ụkpụrụ ọzọ sitere na SOLID set. Ọ na-ekwu na "ọ nwere naanị otu ihe na-akpata mgbanwe na klas." Klas na-edozi naanị otu nsogbu. Ọ nwere ike ịnwe ụzọ dị iche iche, mana nke ọ bụla n'ime ha na-eji naanị iji dozie nsogbu nkịtị. Usoro niile na akụrụngwa kwesịrị ịbụ naanị nke a.

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Uru nke ụkpụrụ a bụ na ọ na-atọpụ njikọ dị n'etiti akụrụngwa ngwanrọ na koodu ahụ. Ọ bụrụ na ị gbakwunye ihe karịrị otu ọrụ na klaasị, ọ na-ewebata mmekọrịta n'etiti ọrụ abụọ a. Ya mere, ọ bụrụ na ị gbanwee otu n'ime ha, enwere ohere dị elu nke imebi nke abụọ, nke ejikọrọ na nke mbụ. Ma nke a pụtara na-abawanye usoro ule iji chọpụta nsogbu niile tupu oge eruo.

Ụkpụrụ Mgbanwe Ndabere (DIP)

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

N'elu bụ ihe atụ koodu ebe AppManager dabere na EventLogWriter, nke n'aka nke ya jikọtara ya na AppManager. Ọ bụrụ na ịchọrọ ụzọ dị iche iche iji gosi ọkwa, ma ọ bụrụ na ọ bụ ịkwanye, SMS ma ọ bụ email, ịkwesịrị ịgbanwe klas AppManager.

Enwere ike idozi nsogbu ahụ site na iji DIP. Yabụ, kama AppManager, anyị na-arịọ EventLogWriter, nke a ga-etinye site na iji usoro.

DIP na-eme ka o kwe omume iji ndị ọzọ dochie modul nke ọ bụla site n'ịgbanwe modul ndabere. Nke a na-eme ka o kwe omume ịgbanwe otu modul na-emetụtaghị ndị ọzọ.

Ihe mejupụtara kama ihe nketa

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịmaEnwere ụzọ abụọ isi eji koodu eme ihe: ihe nketa na ihe mejupụtara, nke abụọ nwere uru na ọghọm nke ha. A na-ahọrọkarị nke abụọ n'ihi na ọ na-agbanwe agbanwe.

Nhazi na-enye gị ikike ịgbanwe omume nke klaasị n'oge ọ na-agba ọsọ site na ịtọ ntọala ya. Mgbe a na-eme ihe ntanetị, a na-eji polymorphism eme ihe, nke na-enye mmejuputa mgbanwe.

Ọbụna Java dị irè site n'aka Joshua Bloch na-adụ ọdụ ịhọrọ nhazi karịa ihe nketa.

Ụkpụrụ ngbanwe nke Barbara Liskov (LSP)

Ụkpụrụ ọzọ sitere na ngwa SOLID. Ọ na-ekwu na subtypes ga-abụ ihe edochiri maka supertype. Ya bụ, ụzọ na ọrụ ndị na-arụ ọrụ na superclass kwesịrị inwe ike ịrụ ọrụ na-enweghị nsogbu na subclass ya.

Ejikọtara LSP na ma otu ụkpụrụ ọrụ yana ụkpụrụ ọrụ nkekọrịta. Ọ bụrụ na klaasị na-enye ọtụtụ ọrụ karịa subclass, mgbe ahụ nke ikpeazụ agaghị akwado ụfọdụ ọrụ, na-emebi ụkpụrụ a.

Nke a bụ mpempe koodu megidere LSP.

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Usoro mpaghara (Rectangle r) na-agbakọ mpaghara akụkụ anọ. Ihe omume a ga-adaba mgbe emechara Square n'ihi na Square abụghị Rectangle ebe a. Dịka ụkpụrụ LSP siri dị, ọrụ ndị na-eji ntụnyere aka na klaasị ntọala kwesịrị inwe ike iji ihe klaasị ewepụtara na-enweghị ntuziaka ọzọ.

Ụkpụrụ a, nke bụ nkọwa kpọmkwem nke subtype, bụ Barbara Liskov tụpụtara ya na isi okwu ọgbakọ 1987 nke isiokwu ya bụ "Data Abstraction and Hierarchy," ya mere aha ya.

Ụkpụrụ Nkewa Interface (ISP)

Ụkpụrụ SOLID ọzọ. Dị ka ya si kwuo, interface nke na-adịghị eji eme ihe ekwesịghị ime ya. Ịgbaso ụkpụrụ a na-enyere usoro ahụ aka ịnọgide na-agbanwe agbanwe ma dị mma maka ịmegharị mgbe a na-eme mgbanwe na mgbagha arụ ọrụ.

Ọtụtụ mgbe, ọnọdụ a na-eme mgbe interface nwere ọtụtụ ọrụ n'otu oge, na onye ahịa chọrọ naanị otu n'ime ha.

Ebe ọ bụ na ide ihe interface bụ ọrụ siri ike, ịgbanwe ya mgbe arụchara ọrụ ahụ n'emebighị ihe ọ bụla ga-abụ ihe ịma aka.

Uru nke ụkpụrụ ISP na Java bụ na a ga-ebu ụzọ tinye usoro niile, ma naanị mgbe ahụ enwere ike iji klas mee ihe. Ya mere, ụkpụrụ ahụ na-eme ka o kwe omume ibelata ọnụ ọgụgụ nke ụzọ.

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Mmemme maka interface, ọ bụghị mmejuputa

Ihe niile ebe a doro anya site na aha. Itinye ụkpụrụ a n'ọrụ na-eduga na ịmepụta koodu na-agbanwe agbanwe nke nwere ike ịrụ ọrụ na mmejuputa ọhụrụ ọ bụla nke interface.

Ịkwesịrị iji ụdị interface maka mgbanwe, ụdị nloghachi, ma ọ bụ ụdị arụmụka usoro. Otu ọmụmaatụ na-eji SuperClass karịa SubClass.

Ya bụ:

Nọmba ndepụta = nwetaNumbers();

Ma ọ bụghị:

Nọmba ArrayList = nwetaNumbers ();

Nke a bụ mmemme bara uru nke ihe a tụlere n'elu.

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Ụkpụrụ ndị nnọchiteanya

Otu ihe atụ a na-ahụkarị bụ ụzọ nhata() na hashCode() na Java. Mgbe ọ dị mkpa iji tụnyere ihe abụọ, a na-enyefe ihe omume a na klas kwekọrọ kama ịbụ onye ahịa.

Uru nke ụkpụrụ ahụ bụ na enweghị mpịachi nke koodu yana ọ dị mfe ịgbanwe omume. Ọ na-emetụtakwa ndị nnọchiteanya mmemme.

10 ụkpụrụ mmemme gbakwasara ebumnobi Onye nrụpụta ọ bụla kwesịrị ịma

Ụkpụrụ ndị a niile na-enye gị ohere ide koodu na-agbanwe agbanwe, mara mma na nke a pụrụ ịdabere na ya na njikọ dị elu na njikọ dị ala. N'ezie, tiori dị mma, ma maka onye mmepụta iji ihe ọmụma enwetara mee ihe n'ezie, ọ dị mkpa ka omume. Ozugbo ị mụtachara ụkpụrụ OOP, nzọụkwụ ọzọ gị nwere ike ịbụ ịmụta usoro imewe iji dozie nsogbu mmepe ngwanrọ.

Skillbox na-atụ aro:

isi: www.habr.com

Tinye a comment