10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Hangata ke kopana le bahlahisi ba so utloeng ka melao-motheo ea SOLID (re e buile ka tsona ka botlalo mona. - Transl.) kapa lenaneo le shebaneng le lintho (OOP), kapa u utloile ka tsona, empa u se ke ua li sebelisa ha u ntse u sebetsa. Sengoliloeng sena se hlalosa melemo ea melao-motheo ea OOP e thusang moqapi mosebetsing oa hae oa letsatsi le letsatsi. Tse ling tsa tsona li tsebahala, tse ling ha li joalo haholo, kahoo sengoloa se tla ba molemo ho ba qalang le ba nang le boiphihlelo ba mananeo.

Re hopotsa: bakeng sa babali bohle ba Habr - theolelo ea li-ruble tse 10 ha u ingolisa thupelong efe kapa efe ea Skillbox u sebelisa khoutu ea papatso ea Habr.

Skillbox e khothaletsa: Lithuto tsa inthaneteng "Moetsi oa Java".

OME (Seke oa Ipheta)

Molao-motheo o bonolo, oo moelelo oa oona o hlakileng ho tsoa lebitsong: "U se ke ua ipheta." Bakeng sa moetsi oa lenaneo, sena se bolela tlhoko ea ho qoba khoutu e kopitsoang, hammoho le monyetla oa ho sebelisa li-abstract mosebetsing oa bona.

Haeba ho na le likarolo tse peli tse pheta-phetoang khoutu, li lokela ho kopanngoa ka mokhoa o le mong. Haeba boleng ba hardcoded bo sebelisoa ka makhetlo a fetang le le leng, ho bohlokoa ho bo fetolela ho ea kamehla ea sechaba.

Sena sea hlokahala e le ho nolofatsa khoutu le ho etsa hore ho be bonolo ho e boloka, e leng sepheo se seholo sa OOP. Ha ua lokela ho sebelisa kopano ho feta tekano, kaha khoutu e tšoanang e ke ke ea feta netefatso ka OrderId le SSN.

Liphetoho tse Akaretsang

Lihlahisoa tse ngata tsa software tsa lik'hamphani li lula li fetoha. Sena se bolela hore liphetoho li lokela ho etsoa ho khoutu, e hloka ho tšehetsoa. U ka nolofatsa bophelo ba hau ka ho sebelisa encapsulation. Sena se tla u lumella ho etsa liteko ka katleho le ho boloka khoutu ea hau e teng. Mohlala o le mong ke ona.

Haeba u ngola ka Java, joale abela mekhoa ea poraefete le mefuta e fapaneng ka ho sa feleng.

Molao-motheo o bulehileng/o koetsoeng

Molao-motheo ona o ka hopoloa habonolo ka ho bala polelo e latelang: "Mekhatlo ea software (lihlopha, li-module, mesebetsi, joalo-joalo) e lokela ho buloa bakeng sa ho atolosoa, empa e koetsoe bakeng sa phetoho." Ha e le hantle, sena se bolela hore ba ka lumella boitšoaro ba bona hore bo fetoloe ntle le ho fetola khoutu ea mohloli.

Molao-motheo o bohlokoa ha liphetoho ho khoutu ea mohloli li hloka ho ntlafatsoa ha khoutu, tlhahlobo ea likarolo le mekhoa e meng. Khoutu e latelang molao-motheo o bulehileng / o koetsoeng ha e fetohe ha e atolosoa, kahoo ho na le mathata a fokolang haholo ka eona.

Mona ke mohlala oa khoutu e tlolang molao-motheo ona.

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Haeba o hloka ho fetola ntho e itseng ho eona, ho tla nka nako e ngata, kaha likarolo tsohle tsa khoutu tse nang le kamano le sekhechana se lakatsehang li tla tlameha ho fetoloa.

Ka tsela, ho buleha-ho koaloa ke e 'ngoe ea melao-motheo ea SOLID.

Motheo o le Mong oa Boikarabello (SRP)

Molao-motheo o mong o tsoang ho sehlopha sa SOLID. E bolela hore “ho na le sesosa se le seng feela se bakang phetoho sehlopheng.” Sehlopha se rarolla bothata bo le bong feela. E ka 'na ea e-ba le mekhoa e mengata, empa e' ngoe le e 'ngoe ea tsona e sebelisoa feela ho rarolla bothata bo tloaelehileng. Mekhoa eohle le thepa li lokela ho sebeletsa sena feela.

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Bohlokoa ba molao-motheo ona ke hore o lokolla ho kopanya pakeng tsa karolo ea motho ka mong ea software le khoutu. Haeba o eketsa ts'ebetso e fetang e le 'ngoe sehlopheng, e hlahisa kamano lipakeng tsa mesebetsi e' meli. Kahoo, haeba u fetola e 'ngoe ea tsona, ho na le monyetla o moholo oa ho senya ea bobeli, e amanang le ea pele. 'Me sena se bolela ho eketsa lipotoloho tsa liteko molemong oa ho tseba mathata ohle esale pele.

Dependency Inversion Principle (DIP)

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Ka holimo ke mohlala oa khoutu moo AppManager e itšetlehileng ka EventLogWriter, eo le eona e amanang haufi-ufi le AppManager. Haeba o hloka mokhoa o fapaneng oa ho bonts'a tsebiso, ekaba push, SMS kapa email, o hloka ho fetola sehlopha sa AppManager.

Bothata bo ka rarolloa ka ho sebelisa DIP. Kahoo, sebakeng sa AppManager, re kopa EventLogWriter, e tla kenngoa ho sebelisoa moralo.

DIP e etsa hore ho khonehe ho fetola li-module tsa motho ka mong habonolo ka ho fetola mojule oa ho itšetleha. Sena se etsa hore ho khonehe ho fetola mojule o le mong ntle le ho ama tse ling.

Sebopeho sebakeng sa lefa

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e TsebaHo na le mekhoa e 'meli ea mantlha ea ho sebelisa khoutu hape: lefa le sebopeho, tseo ka bobeli li nang le melemo le mefokolo ea tsona. Hangata ea bobeli e khethoa hobane e tenyetseha haholoanyane.

Sebopeho se u fa bokhoni ba ho fetola boitšoaro ba sehlopha ka nako ea ho sebetsa ka ho beha thepa ea sona. Ha ho sebelisoa li-interfaces, ho sebelisoa polymorphism, e fanang ka ts'ebetsong e bonolo haholoanyane.

Esita le Java e sebetsang ka Joshua Bloch e eletsa ho khetha sebopeho ho feta lefa.

Barbara Liskov Substitution Principle (LSP)

Molao-motheo o mong o tsoang ho SOLID toolkit. E bolela hore subtypes e tlameha ho nkeloa sebaka ke supertype. Ke hore, mekhoa le mesebetsi e sebetsang le superclass e lokela ho khona ho sebetsa ntle le mathata le li-subclass tsa eona.

LSP e amahanngoa le molao-motheo o le mong oa boikarabello le molao-motheo oa boikarabello bo arolelanoang. Haeba sehlopha se fana ka ts'ebetso e ngata ho feta sehlopha se senyenyane, joale sa morao-rao se ke ke sa tšehetsa tse ling tsa ts'ebetso, ho tlōla molao-motheo ona.

Mona ke karolo ea khoutu e hananang le LSP.

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Sebaka (Rectangle r) mokhoa o lekanya sebaka sa Rectangle. Lenaneo le tla senyeha kamora ho etsa Square hobane Square ha se Rectangle mona. Ho ea ka molao-motheo oa LSP, mesebetsi e sebelisang litšupiso ho lihlopha tsa motheo e lokela ho khona ho sebelisa lintho tsa lihlopha tse nkiloeng ntle le litaelo tse eketsehileng.

Molao-motheo ona, e leng tlhaloso e khethehileng ea mofuta o monyenyane, o ile oa hlahisoa ke Barbara Liskov puong ea sehlooho ea kopano ea 1987 e nang le sehlooho se reng "Data Abstraction and Hierarchy," ka hona lebitso la eona.

Molao-motheo oa ho Aroha ha Sehokelo (ISP)

Molao-motheo o mong oa SOLID. Ho ea ka eona, sebopeho se sa sebelisoeng ha sea lokela ho kenngoa ts'ebetsong. Ho latela molao-motheo ona ho thusa sistimi hore e lule e tenyetseha ebile e loketse ho nchafatsoa ha liphetoho li etsoa molemong oa ts'ebetso.

Hangata, boemo bona bo etsahala ha sebopeho se na le mesebetsi e mengata ka nako e le 'ngoe,' me mofani o hloka e le 'ngoe feela ea bona.

Kaha ho ngola sebopeho ke mosebetsi o boima, ho o fetola ka mor'a hore mosebetsi o phethoe ntle le ho senya ntho leha e le efe e tla ba phephetso.

Molemo oa molao-motheo oa ISP ho Java ke hore mekhoa eohle e tlameha ho sebelisoa pele, 'me feela ka mor'a moo e ka sebelisoa ke lihlopha. Ka hona, molao-motheo o etsa hore ho khonehe ho fokotsa palo ea mekhoa.

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Lenaneo bakeng sa sebopeho, eseng ts'ebetsong

Ntho e 'ngoe le e' ngoe e mona e hlakile ho tloha sehloohong. Ho sebelisa molao-motheo ona ho lebisa ho thehoeng ha khoutu e feto-fetohang e ka sebetsang le ts'ebetsong leha e le efe e ncha ea sebopeho.

U lokela ho sebelisa mofuta oa sebopeho bakeng sa mefuta-futa, mefuta ea ho khutla, kapa mofuta oa mokhoa oa ho ngangisana. Mohlala ke ho sebelisa SuperClass ho fapana le SubClass.

Ke hore:

Lenane la linomoro= getNumbers();

Empa eseng:

Linomoro tsa ArrayList = getNumbers();

Mona ke ts'ebetsong e sebetsang ea se boletsoeng ka holimo.

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Molao-motheo oa ho fana

Mohlala o tloaelehileng ke mekhoa e lekanang () le hashCode () ho Java. Ha ho hlokahala ho bapisa lintho tse peli, ketso ena e abeloa sehlopha se ts'oanang ho fapana le sa moreki.

Molemo oa molao-motheo ke hore ha ho na ho pheta-pheta khoutu mme ho bonolo ho fetola boitšoaro. E sebetsa hape le ho baemeli ba ketsahalo.

10 Melao-motheo ea Mananeo e Ikemetseng Moetsi e mong le e mong o Lokela ho e Tseba

Melao-motheo ena kaofela e u lumella hore u ngole khoutu e bonolo haholoanyane, e ntle le e ka tšeptjoang e nang le bonngoe bo phahameng le ho kopanya ho tlaase. Ha e le hantle, khopolo e ntle, empa hore moqapi a sebelise tsebo eo ae fumaneng, ho hlokahala boitlhakiso. Hang ha u se u tseba melao-motheo ea OOP, mohato oa hau o latelang e ka ba ho ithuta mekhoa ea moralo ho rarolla mathata a tloaelehileng a nts'etsopele ea software.

Skillbox e khothaletsa:

Source: www.habr.com

Eketsa ka tlhaloso