sao tutorial

SOLID ke melao-motheo efe e 5 ea mananeo a shebaneng le lintho

SOLID ke khutsufatso, e supang melao-motheo e mehlano ea meralo e shebaneng le lintho (OOD kapa OOP). Tsena ke litataiso tseo bahlahisi ba ka li sebelisang ho etsa software e bonolo ho e tsamaisa, ho e boloka le ho e atolosa. Ho utloisisa likhopolo tsena ho tla u etsa moqapi ea betere le ho u thusa ho qoba mathata a taolo ea software. Ho bolela eng ho ba moqapi ea hloahloa?

Mang kapa mang ea nang le boiphihlelo bo itseng lenaneong la software o ahlola khoutu ea software e ngotsoeng ke ba bang, a sebelisa meeli ea kahlolo e ipapisitseng le tsela eo a sebetsang ka eona.

Nakong ea mosebetsi oa ka oa botsebi, ke tsebile bahlahisi ba bangata, 'me ke bone mela e likete ea khoutu mme ha ke hloka ho lekola boiphihlelo ba moqapi ke sheba lintlha tse peli haholo:

  • Ho bonolo ho bala khoutu;
  • Khoutu ea bona e kanna ea sebetsa le ho fetoha ha nako e ntse e feta.

Ka lehlohonolo, ho na le metheo kapa metheo e meng e etsang hore ho be bonolo ho ba betere ha u ngolisa.

SOLID e khutsufatsang e emetse:
S: molao-motheo oa boikarabello bo le bong
O: molao-motheo o koetsoeng
L: Molao-motheo oa sebaka sa Liskov
I: Molao-motheo oa khethollo ea li-interface
D: Molao-motheo oa ho fetola litšepiso

Ha re qaleng ka ho teba ka molao-motheo oa SOLID oa pele, e leng

Molao-motheo oa Boikarabello bo le Mong

Sehlopha (kapa module) se lokela ho ba le lebaka le le leng feela la ho fetoha, ho fetoha.

Khopolo ka boeona e bonolo haholo, empa ho fihlela mokhoa ona o bonolo tsela ea ho kenya tšebetsong e ka ba thata haholo. Sehlopha se lokela ho ba le lebaka le le leng feela la ho fetoha.

Empa hobaneng? 

Hobaneng ho le bohlokoa ho ba le lebaka le le leng feela la ho fetoha?

Mohlala, haeba ho na le mabaka a mabeli a fapaneng a ho fetoha, ho ka nahanoa hore lihlopha tse peli tse fapaneng li ka sebetsa ka khoutu e le 'ngoe ka mabaka a mabeli a fapaneng. E mong le e mong o tla tlameha ho kenya tharollo ea hae, eo maemong a puo e hlophisitsoeng (joalo ka C ++, C # kapa Java), e ka lebisang ho li-module tse sa lumellaneng le lihlopha tse ling kapa likarolo tse ling tsa ts'ebeliso.

Mohlala o mong, haeba o sebelisa puo e tolokiloeng, o kanna oa tlameha ho leka hape sehlopha kapa module ka mabaka a fapaneng. Sena se bolela mosebetsi o mongata, nako le boiteko bakeng sa taolo ea boleng.

Ho khetholla karolo e le 'ngoe eo sehlopha kapa module e lokelang ho ba le eona ho thata haholo ho feta ho sheba lenane la ho etsa liteko. 

Empa ha re leke ho nahana ho latela pono e tlase ea mahlale, ke hore, ha re leke ho sekaseka mosebelisi oa sehlopha sa rona kapa module, ke mang ea tla e sebelisa. Ntlha ea bohlokoa eo re tlamehang ho lula re e hopotse ke taba ea hore basebelisi ba ts'ebeliso kapa sistimi eo re e hlahisang ba fuoang mojule o itseng e tla ba bona ba kopang liphetoho ho eona. Ba sebeletsang ba tla kopa ho fetola sehlopha kapa module. 

Mehlala e meng ea li-module le ts'ebeliso ea tsona:

  • Mojaro oa tlhokomelo: mosebelisi o entsoe ka batsamaisi ba database le lihahi tsa software.
  • Mojule oa ho tlaleha: mosebelisi o entsoe ka basebetsi ba liofisi, babalamatlotlo le tlhahiso.
  • Mojule oa lipalo tsa litefo bakeng sa sistimi ea taolo ea meputso: basebelisi ba ka kenyelletsa babuelli ba molao, batsamaisi le babalamatlotlo.
  • Mojule oa ho batla mongolo oa sistimi ea taolo ea laeborari: basebelisi ba ka emeloa ke laeborari kapa ke baeti le bareki ba laeborari ka boyona.

Kahoo haeba mohato oa pele ke ho batla batšoantšisi kapa sebapali se nang le karolo ea sebuelli le module, ho kopanya batho ka bomong le likarolo tsohle ho ka ba thata. K'hamphaning e nyane, motho a le mong a ka bapala likarolo tse ngata ha k'hamphaning e kholo ho ka ba le batho ba bangata ba nang le karolo e le 'ngoe. 

Ho bonahala ho utloahala ho khetholla likarolo, ho fapana le batho kapa basebelisi.

Ka hona:

  • tšebeliso ea sistimi ea software defie hlalosa mabaka a phetoho;
  • boikarabello ke lelapa la mesebetsi le khotsofatsang litlhoko tsa sebapali se itseng, ke hore, sa mosebelisi oa sistimi;
  • batšoantšisi, mosebelisi o fetoha mohloli oa phetoho bakeng sa mesebetsi ea lelapa e lokelang ho khotsofatsa tlhoko ea mosebelisi;
  • ntlafatso ea litlhoko tsa mosebelisi, e khannela ts'ebetso ea ts'ebetso

A re ke re boneng mehlala e seng mekae

Ha re re re na le sehlopha sa Buka se kenyelletsang mohopolo oa buka le tšebetso ea eona.

Buka ea sehlopha {

    mosebetsi GetTitle () {

        khutla "Buka e kholo";

    }

    sebetsa getAuthor () {

        khutla "Alessandro Baricco";

    }

    sebetsa leqephe le latelang () {

        // leqephe le latelang

    }

    sebetsa printCurrentPage () {

        pheta "litaba tsa leqephe la hajoale";

    }

}

Ena ke sehlopha se tloaelehileng haholo. Re na le buka, mme sehlopha se ka re fa sehlooho, ba ka re fa sengoli, mme ba ka fetela pele. Qetellong, e khona hape ho hatisa leqephe la hajoale skrineng. 

Leha ho le joalo, ho na le bothata bo fokolang. 

Ha re nahana ka batšoantšisi ba amehang tsamaisong ea Buka, e ka ba bo-mang? 

Re ka nahana habonolo ka batšoantšisi ba babeli ba fapaneng mona: Tsamaiso ea libuka (joalo ka ea libukale Mochini oa tlhahiso ea data (joalo ka ha re batla ho fetisetsa litaba ho mosebelisi: skrineng, sebopeho sa lits'oants'o sa mosebelisi, sebopeho sa mosebelisi sa sengoloa feela, mohlomong se hatisoe). 

Ka hona re na le batšoantšisi ba babeli ba fapaneng haholo ba sebelisanang le sehlopha.

Ka bokhutšoanyane sehlopha sena se kopanya pakeng tsa:

  • mohopolo oa khoebo ka 
  • nehelano 

sena e ka ba bothata hobane e tlola molao-motheo o le mong oa mokoloto (SRP). 

Re ka fetoha joang, re ka ntlafatsa khoutu ee joang ho hlompha molao-motheo oa boikarabello bo le bong?

Sheba khoutu e latelang:

Buka ea sehlopha {

    mosebetsi GetTitle () {

        khutla "Oceano Mare";

    }

    sebetsa getAuthor () {

        khutla "Alessandro Baricco";

    }

    leqephe la tšebetso () {

        // leqephe le latelang

    }

    sebetsa getCurrentPage () {

        pheta "litaba tsa leqephe la hajoale";

    }

}

segokanyimmediamentsi sa sebolokigolo Printer

    mosebetsiPrintaPage ($ leqephe);

Leselinyana la litaba tse ncha
Se ke oa fetoa ke litaba tsa bohlokoa ka ho fetisisa tsa boqapi. Ingolise ho li amohela ka lengolo-tsoibila.

}

StampaLibro e sebelisa lisebelisoa tsa khatiso {

    sebetsa printPages ($ leqephe) {

        echo leqephe la $;

    }

}

 

Class HtmlPrinter e sebelisa Printer {

    sebetsa printPages ($ leqephe) {

        pheta ' '. $ leqephe. ' ';

    }

}

Mohlala ona o bonolo haholo o bonts'a mokhoa oa ho arola nehelano le mohopolo oa khoebo, 'me ho latela SRP e fana ka menyetla e metle ho fetoheng ha morero oa rona.

Ha re shebeng mohlala o mong:

Mohlala o ts'oanang le o kaholimo ke ha ntho e ka boloka le ho iphumolla ho tsoa nehelanong.

Buka ea sehlopha {

    mosebetsi GetTitle () {

        khutla "Oceano Mare";

    }

    sebetsa getAuthor () {

        khutla "Alessandro Baricco";

    }

    leqephe la tšebetso () {

        // leqephe le latelang

    }

    sebetsa getCurrentPage () {

        khutlisa "litaba tsa leqephe la hajoale";

    }

    mosebetsi boloka () {

        $ filename = '/ litokomane /'. $ sena-> getTitolo (). '-'. $ sena-> getAuthor ();

        file_put_contents ($ filename, serialize ($ this));

    }

}

Joalo ka pele, le mona re ka tseba libapali tse fapaneng joalo ka Tsamaiso ea libuka (joalo ka ea libukale Ho phehella. Nako le nako ha re batla ho fetola tsela eo re tsamaeang ka eona ho tloha leqepheng le leng ho ea ho le leng, re hloka ho fetola sehlopha sena. Re ka ba le mabaka a 'maloa a phetoho.

Buka ea sehlopha {

    mosebetsi GetTitle () {

        khutla "Oceano Mare";

    }

    sebetsa getAuthor () {

        khutla "Alessandro Baricco";

    }

    leqephe la tšebetso () {

        // leqephe le latelang

    }

    sebetsa getCurrentPage () {

        khutlisa "litaba tsa leqephe la hajoale";

    }

}

sehlopha sa SimpleFilePersistence {

    mosebetsi boloka (Book $ book) {

        $ filename = '/ litokomane /'. $ buka-> GetTitle (). '-'. $ buka-> getAuthor ();

        file_put_contents ($ filename, serialize ($ book));

    }

}

Ho fetisetsa ts'ebetso ea ho phehella sehlopheng se seng ho tla arola boikarabello ka ho hlaka 'me re tla ba le bolokolohi ba ho fapanyetsana mekhoa ea ho phehella ntle le ho ama sehlopha sa rona sa Buka. Mohlala, ho kenya ts'ebetsong sehlopha sa DatabasePersistence ho ka ba bobebe, mme mohopolo oa rona oa khoebo o hahiloeng holima ts'ebetso ea libuka o ke ke oa fetoha.

Tsoela pele ka ho bala molao-motheo oa bobeli Open / Closed ->

Ercole Palmeri

Leselinyana la litaba tse ncha
Se ke oa fetoa ke litaba tsa bohlokoa ka ho fetisisa tsa boqapi. Ingolise ho li amohela ka lengolo-tsoibila.

Lihlooho tsa morao tjena

Bahatisi le OpenAI ba saena litumellano tsa ho laola phallo ea tlhahisoleseling e sebetsitsoeng ke Artificial Intelligence

Mantaha o fetileng, Financial Times e phatlalalitse selekane le OpenAI. FT e fana ka tumello ea bongoli ba eona ba maemo a lefats'e…

30 April 2024

Litefiso tsa Marang-rang: Mona ke kamoo Litšebeletso tsa Phallo li U Etsang Hore U Lefe ka ho sa Feleng

Batho ba limilione ba lefella litšebeletso tsa ho phallela, ba lefa litefiso tsa khoeli le khoeli tsa ho ngolisa. Ke maikutlo a tloaelehileng hore u…

29 April 2024

Veeam e fana ka ts'ehetso e felletseng ea thekollo, ho tloha ts'ireletso ho isa ho karabelo le ho hlaphoheloa

Coveware ke Veeam e tla tsoelapele ho fana ka litšebeletso tsa karabelo ea liketsahalo tsa bosholu ba cyber. Coveware e tla fana ka bokhoni ba forensics le tokiso…

23 April 2024

Phetohelo ea Botala le Dijithale: Kamoo Tlhokomelo e Lebeletsoeng e Fetola Indasteri ea Oli le Khase

Tlhokomelo ea esale pele e tlisa phetoho lefapheng la oli le khase, ka mokhoa o mocha le o sebetsang oa taolo ea limela.…

22 April 2024