Artikoli

Mepee / Emechiela, dịka ụkpụrụ SOLID si dị

Ndi akụrụngwa (klaasị, modulu, ọrụ, wdg) kwesiri imeghe maka ndọtị, mana emechi maka edezi.

Mepụta ngwanrọ: modulu, klaasị na ọrụ n'ụzọ ọ bụla na mgbe arụmọrụ ọhụrụ dị mkpa, anyị ekwesịghị ịgbanwe koodu dị ugbu a kama kama dee koodu ọhụụ nke koodu dị ugbu a ga-eji. Nke a nwere ike daa ụda, ọkachasị asụsụ dịka Java, C, C ++ ma ọ bụ C # ebe ọ na-emetụta ọ bụghị naanị na isi mmalite koodu n'onwe ya kamakwa ọnụọgụ abụọ. Anyị chọrọ imepụta ihe ọhụụ na ụzọ ndị anaghị achọ redistribution nke ọnụọgụ abụọ dị ugbu a, ndị nrụpụta, ma ọ bụ DLL.
OCP na ọnọdụ SOLID

 

Mgbakwunye SRP na OCP

Anyị ahụworị ụkpụrụ SRP nke Ọrụ Nanị Otu nke na-ekwu na otu modul kwesịrị inwe naanị otu ihe kpatara ịgbanwe. Principleskpụrụ OCP na SRP bụ nkwado. Koodu ezubere ịgbaso ụkpụrụ SRP ga-asọpụrụ ụkpụrụ OCP. Mgbe anyị nwere koodu nwere naanị otu ihe ga-agbanwe, iwebata ihe ọhụrụ ga-emepụta ihe nke abụọ maka mgbanwe ahụ. Ya mere, a ga-emebi ma SRP ma OCP. N'otu aka ahụ, ọ bụrụ na anyị nwere koodu nke kwesịrị ịgbanwe naanị mgbe isi ọrụ ya gbanwere ma ghara ịgbanwe agbanwe mgbe agbakwunyere arụmọrụ ọhụrụ, si otú ahụ na-asọpụrụ OCP, ọ ga-akwanyekwara SRP ùgwù.
Nke a apụtaghị na SRP na - eduga na OCP ma ọ bụ na - agbanyeghị aka, mana n'ọtụtụ oge ma ọ bụrụ na otu n'ime ha agbasoro ya, iru nke abụọ dị mfe.

 

Ihe nlere nke imebi iwu OCP

Si a kpere oru si ele ihe anya, Open / Emechiela ụkpụrụ dị nnọọ mfe. Mmekọrịta dị mfe n’etiti klaasị abụọ, dịka nke dị n’okpuru, na-emebi ụkpụrụ OCP.

Otu onye ọrụ na-eji klas Logic eme ihe ozugbo. Ọ bụrụ na ọ dị mkpa ka anyị mejuputa klaasị Logic nke abụọ n'ụzọ ga - enyere anyị aka iji nke ugbu a na nke ọhụrụ, klas Logic dị ugbu a ga - agbanwe. Ejikọtara onye ọrụ ahụ na ntinye nke mgbagha, ọ nweghị ụzọ anyị ga-esi nye mgbagha ọhụrụ na-enweghị emetụta nke ugbu a. Ma mgbe anyị na-ekwu maka asụsụ dị iche iche etinyere, klas ndị ọrụ nwere ike ịchọ mgbanwe. Ọ bụrụ na anyị na-ekwu maka asụsụ agbakọtara, n'ezie ndị ọrụ a na-arụ ọrụ na ndị nwere uche ma ọ bụ ọbá akwụkwọ dị ike ga-achọ nkwụghachi na nnyefe, ọkacha mma iji zere mgbe enwere ike.

N'izo aka na atụmatụ gara aga, anyị nwere ike ịchọpụta na klaasị ọ bụla na-eji klaasị ọzọ eme ihe, nwere ike ibute mmebi nke ụkpụrụ Open / Emechiela. 
Ka anyị were ya na anyị chọrọ ide klas nwere ike ịnye ọganihu "na pasent" nke faịlụ ebudatara, site na ngwa anyị. Anyị ga-enwe klaasị isi abụọ, Ọganihu na Njikwa, echekwara m na anyị ga-achọ iji ha dị ka ndị a:

 

ọrụ testItCanGetTheProgressOfAFileAsAPercent () {
     $ file = Faịlụ ọhụrụ ();
     $ file-> ogologo = 200;
     $ file-> zigara = 100;
     $ ọganihu = Ọganihu ọhụrụ ($ faịlụ);
     $ this-> assertEquals (50, $ progress-> getAsPercent ());
}

N'ime koodu a, anyị bụ ndị ọrụ Ọganihu. Anyị chọrọ inweta ọnụọgụ dị ka pasent, n'agbanyeghị ogo faịlụ ahụ n'ezie. Anyị na-eji Faịlụ dị ka isi iyi nke ozi. Faịlụ nwere ogologo na bytes na ubi a na-akpọ zitere nke na-anọchite anya ọnụọgụ data ezigara na nbudata. Anyị achọghị ịma etu ụkpụrụ ndị a si emelite na ngwa ahụ. Anyị nwere ike iche na e nwere ụfọdụ mgbagha anwansi na-eme nke a maka anyị, yabụ na ule anyị nwere ike ịtọ ha hoo haa.

 

klas Faịlụ
     ọha $ ogologo;
     ọha $ ezigara;
}

 

Klas faịlụ ahụ bụ naanị ihe data dị mfe nwere ubi abụọ ahụ. O doro anya na ọ kwesịkwara ịnwe ozi na omume ndị ọzọ, dị ka aha aha, ụzọ, ụzọ ikwu, ndekọ dị ugbu a, ụdị, ikikere, wdg.

 

Ọganihu Ọkwa {

     onwe $ file;

     ọrụ __construct (Faịlụ $ file) {
          $ this-> faịlụ = $ file;
     }

     ọrụ getAsPercent () {
          laghachi $ this-> file-> zitere * 100 / $ this-> file-> ogologo;
     }

}

Ọganihu bụ naanị klaasị na-anabata faịlụ na onye nrụpụta ya. Maka ihe doro anya, anyị akọwapụtala ụdị mgbanwe na-ewu ụlọ. E nwere otu usoro bara uru na Ọganihu, getAsPercent (), nke ga-ewere ụkpụrụ zitere na ogologo site na Faịlụ wee gbanwee ha na pasent. Mfe ma ọ na-arụ ọrụ.

Usoro a gosipụtara na ọ bụ eziokwu, agbanyeghị na ọ megidere ụkpụrụ Open / Emechiela.

Mana gịnị mere?

Oleekwa otú?

 

Ka anyị gbalịa ịgbanwe ihe ndị a chọrọ

Ngwa ọ bụla iji gbanwee oge ga-achọ atụmatụ ọhụrụ. A ọhụrụ atụmatụ maka anyị ngwa nwere ike ịbụ na-ekwe music gụgharia kama dị na nbudata faịlụ. Ogologo faịlụ ahụ na-anọchi anya ya na bytes, oge nke egwu na sekọnd. Anyị chọrọ ịnye ndị na-ege anyị ntị ọkwa ọganihu, mana anyị nwere ike iji klaasị edepụtara n'elu?

Mba anyị enweghị ike. Ọganihu anyị ga-adaba na Njikwa. Ọ nwere ike ijikwa ozi faịlụ naanị, n'agbanyeghị na enwere ike itinye ya na ọdịnaya egwu. Mana ime nke ahụ anyị ga-agbanwe ya, anyị ga-eme Ọganihu mara egwu na faịlụ. Y'oburu na imewe anyi bu OCP, anyi agaghi emetu File ma obu Oganihu aka. Anyị nwere ike jigharịa ọganihu dị ugbu a ma tinye ya na egwu.

 

Akwụkwọ akụkọ ọhụrụ
Agbagharala akụkọ kacha mkpa maka ime ọhụrụ. Debanye aha iji nweta ha site na email.

O kwere omume ngwọta

Asụsụ ndị mepere emepe na-agbanwe agbanwe nwere uru nke ijikwa ụdị ihe na-agba ọsọ. Nke a na-enye anyị ohere iwepu typehint ahụ site na Onye nrụpụta Ọganiihu na koodu ga-aga n'ihu na-arụ ọrụ.

Ọganihu Ọkwa {

     onwe $ file;

     ọrụ __construct ($ file) {
         $ this-> faịlụ = $ file;
     }

    ọrụ getAsPercent () {
         laghachi $ this-> file-> zitere * 100 / $ this-> file-> ogologo;
     }

}

Anyị nwere ike ịmalite ihe ọ bụla na Ọganihu. Na site na ihe ọ bụla, m pụtara n'ụzọ nkịtị ihe ọ bụla:

klaasị Music {

ọha $ ogologo;
ọha $ ezigara;

ọhaneze $ omenkà;
ọha $ album;
ọha $ tọhapụ Dbọchị;

ọrụ getAlbumCoverFile () {
laghachi 'Images / Covers /'. $ this-> omenka. '/'. $ this-> ọba. '.png';
}
}

Na klas Music dị ka nke dị n'elu ga-arụ ọrụ zuru oke. Anyị nwere ike ịnwale ya ule dị ezigbo ka Faịlụ.
ọrụ testItCanGetTheProgressOfAMusicStreamAsAPercent () {
$ music = Egwu ohuru ();
$ music-> ogologo = 200;
$ music-> zigara = 100;

$ ọganihu = Ọganihu ọhụrụ ($ music);

$ this-> assertEquals (50, $ progress-> getAsPercent ());
}

Ya mere, enwere ike iji ọdịnaya enwere ike iji ya mee ihe na klaasị Ọganihu. Ma eleghị anya, anyị kwesịrị igosipụta ya na koodu site na-agbanwe agbanwe aha:

Ọganihu Ọkwa {

onwe $ measurableContent;

ọrụ __construct ($ measurableContent) {
$ this-> measurableContent = $ measurableContent;
}

ọrụ getAsPercent () {
laghachi $ this-> measurableContent-> zitere * 100 / $ this-> measurableContent-> length;
}

}

Mgbe anyị kọwapụtara File dị ka typehint ahụ, anyị nwere nchekwube maka ihe klaasị anyị nwere ike ijikwa. Ọ bụ ihe doro anya ma ọ bụrụ na ihe ọ bụla ọzọ abịa, nnukwu ndudue ga-agwa anyị.

Una klas na overrides usoro nke a isi klas dị otú ahụ na isi klas nkwekọrịta adịghị asọpụrụ site ewepụtara klas. 

Anyị achọghị ịkwụsị ịgbalị ịkpọ usoro ma ọ bụ nweta ohere na ihe ndị na-ekwekọghị na nkwekọrịta anyị. Mgbe anyị nwere ụdị, a na-akọwapụta nkwekọrịta ya site na ya. Uzo na uzo nke klas faili. Ugbu a na anyị enweghị ihe ọ bụla, anyị nwere ike izipu ihe ọ bụla, ọbụlagodi eriri ma ọ ga - ebute njehie dị njọ.

Ọ bụ ezie na njedebe ikpeazụ bụ otu ihe ahụ n'okwu abụọ ahụ, nke pụtara na agbaji koodu ahụ, nke mbụ mepụtara ozi mara mma. Otú ọ dị, nke a dị nnọọ ọchịchịrị. Enweghị ụzọ ị ga-esi mara ihe mgbanwe bụ - eriri n'ọnọdụ anyị - yana ihe akụrụngwa achọtara na ahụghị ya. O siri ike idozi na idozi nsogbu ahụ. Onye mmemme ga-emepe klaasị Ọganihu, gụọ wee ghọta ya. Nkwekọrịta ahụ, na nke a, mgbe ị kọwapụtaghị ụdịdị ahụ, bụ definished site na omume nke Ọganihu. Ọ bụ nkwekọrịta pụtara ìhè mara naanị Ọganiihu. N'ihe atụ anyị, ọ bụ defienwetara site na ịnweta mpaghara abụọ ahụ, ezitere na ogologo, na usoro getAsPercent(). N'ime ndụ n'ezie, nkwekọrịta ahụ pụtara nwere ike ịdị mgbagwoju anya ma sie ike ịchọpụta site na ịchọ naanị sekọnd ole na ole na klaasị.

A na-atụ aro ihe ngwọta a ma ọ bụrụ na ọnweghị nke ndụmọdụ ndị ọzọ dị n'okpuru ebe a ka ọ ga-adị mfe itinye n'ọrụ ma ọ bụ ọ bụrụ na ha ga-eweta nnukwu mgbanwe ụkpụrụ ụlọ nke anaghị enyere mbọ ahụ.

Ercole Palmeri

Akwụkwọ akụkọ ọhụrụ
Agbagharala akụkọ kacha mkpa maka ime ọhụrụ. Debanye aha iji nweta ha site na email.

Ihe odide ndị a

Ntinye aka ohuru na Augmented Reality, ya na onye na-ekiri Apple na Catania Polyclinic

A rụrụ ọrụ ophthalmoplasty site na iji ihe nlele azụmahịa Apple Vision Pro na Catania Polyclinic…

3 Ka 2024

Uru nke ibe agba maka ụmụaka - ụwa anwansi maka afọ niile

Ịzụlite ọmarịcha nka ụgbọ ala site na ịcha agba na-akwado ụmụaka maka nka dị mgbagwoju anya dị ka ide ihe. Ka agba…

2 Ka 2024

Ọdịnihu dị ebe a: Kedu ka ụlọ ọrụ mbupu si eme mgbanwe akụ na ụba ụwa

Ngalaba ndị agha mmiri bụ ezigbo ike akụ na ụba ụwa, nke gorola n'ahịa ahịa ijeri 150 ...

1 Ka 2024

Ndị mbipụta na OpenAI bịanyere aka n'akwụkwọ nkwekọrịta iji mezie usoro mgbasa ozi nke Artificial Intelligence na-ahazi

Mọnde gara aga, Financial Times kwupụtara nkwekọrịta ya na OpenAI. FT na-enye ikike maka akwụkwọ akụkọ ụwa…

30 April 2024