10 Nga Tikanga Papatono-Hanga-Hanga Me mohio ia Kaiwhakawhanake
He maha nga wa ka tutaki ahau ki nga kaiwhakawhanake kaore ano kia rongo mo nga kaupapa SOLID (tatou i korero mo ratou i konei. — Whakamaori.) he kaupapa whakangao ahanoa ranei (OOP), kua rongo ranei koe, engari kaua e whakamahia i roto i nga mahi. Ko tenei tuhinga e whakaatu ana i nga painga o nga kaupapa OOP hei awhina i te kaiwhakawhanake i roto i ana mahi o ia ra. Ko etahi o ratou e tino mohiotia ana, ko etahi kaore i te tino nui, na reira ka whai hua te tuhinga mo te hunga timata me nga kaiwhakatakoto kaupapa mohio.
Ka whakamahara matou:mo nga kaipānui Habr katoa - he utu 10 ruble ina whakauru ana koe ki tetahi akoranga Skillbox ma te whakamahi i te waehere whakatairanga Habr.
He maataapono tino ngawari, ko te tino kaupapa e marama ana mai i te ingoa: "Kaua e korero ano." Mo te kaitoha, ko te tikanga me karo i nga waehere taarua, me te whai waahi ki te whakamahi tangohanga i roto i a raatau mahi.
Mena e rua nga waahanga tukurua i roto i te waehere, me whakakotahi ki te tikanga kotahi. Mena he nui ake i te kotahi te whakamahi i tetahi uara kua oti te tohu, he mea tika ki te huri ki te taumau a te iwi.
He mea tika tenei kia ngawari ai te waehere me te ngawari ki te pupuri, koinei te kaupapa matua o OOP. Kaua rawa koe e whakamahi nui i te uniana, na te mea ka kore taua waehere e paahi i te manatoko me te OrderId me te SSN.
Huringa Whakakapi
Kei te whanake haere tonu nga hua rorohiko a te nuinga o nga kamupene. Ko te tikanga me whakarereke te waehere, me tautoko. Ka taea e koe te whakapai ake i to oranga ma te whakamahi i te encapsulation. Ma tenei ka taea e koe te whakamatautau me te pupuri i to turanga waehere o naianei. Anei tetahi tauira.
Ka ngawari te mahara ki tenei kaupapa ma te panui i te korero e whai ake nei: "Me tuwhera nga hinonga rorohiko (nga karaehe, nga waahanga, nga mahi, me etahi atu.) mo te toronga, engari ka kati mo te whakarereke." I roto i te mahi, ko te tikanga ka taea e ratou te whakarereke i o raatau whanonga me te kore e whakarereke i te waehere puna.
He mea nui te maataapono ina hiahia nga huringa ki te waehere puna te whakahou i te waehere, te whakamatautau wae, me etahi atu tikanga. Ko te Waehere e whai ana i te maapono tuwhera/kati kare e huri ina whakaroahia, no reira he iti noa atu nga raru.
Anei tetahi tauira o te waehere e takahi ana i tenei kaupapa.
Mena ka hiahia koe ki te whakarereke i tetahi mea i roto, ka roa te wa, na te mea me whakarereke nga waahanga katoa o te waehere e hono ana ki te waahanga e hiahiatia ana.
Ma te ara, ko te tuwhera-kati tetahi o nga kaupapa o SOLID.
Tikanga Kawenga Kotahi (SRP)
Ko tetahi atu kaupapa mai i te huinga SOLID. Te na ô ra e “hoê noa tumu e taui ai te piha haapiiraa.” Kotahi anake te rapanga ka whakaotihia e te akomanga. He maha pea nga tikanga, engari ka whakamahia anake hei whakaoti rapanga noa. Ko nga tikanga me nga taonga katoa me mahi tenei anake.
Ko te uara o tenei maataapono ko te wetewete i te hono i waenga i te waahanga rorohiko takitahi me te waehere. Mena ka taapirihia e koe nga taumahinga neke atu i te kotahi ki te karaehe, ka whakaatu mai he hononga i waenga i nga mahi e rua. Na, ki te whakarereke koe i tetahi o enei, he nui te tupono ki te whakangaro i te tuarua, e hono ana ki te tuatahi. Ko te tikanga ko te whakanui ake i nga huringa whakamatautau kia mohio ai nga raru katoa i mua.
Tikanga Hurihuri Whakawhirinaki (DIP)
Kei runga ake nei he tauira waehere kei te whakawhirinaki a AppManager ki te EventLogWriter, ka hono tata ki a AppManager. Mena ka hiahia koe ki tetahi huarahi rereke hei whakaatu i te panui, ahakoa pana, SMS, imeera ranei, me huri koe i te akomanga AppManager.
Ka taea te whakatau i te raruraru ma te whakamahi i te DIP. Na, hei utu mo AppManager, ka tono matou i tetahi EventLogWriter, ka whakauruhia ma te whakamahi i te anga.
Ma te DIP ka taea te whakakapi i nga waahanga takitahi me etahi atu ma te whakarereke i te waahanga whakawhirinaki. Ma tenei ka taea te whakarereke i tetahi waahanga me te kore e pa ki etahi atu.
Te titonga hei utu mo te tuku iho
E rua nga huarahi matua ki te whakamahi ano i te waehere: te tuku iho me te hanganga, kei a raua ano nga painga me nga ngoikoretanga. I te nuinga o te wa ka pai ake te tuarua na te mea he ngawari ake.
Ma te tito ka taea e koe te whakarereke i te whanonga o te karaehe i te wa whakahaere ma te tautuhi i ona ahuatanga. I te wa e whakatinana ana i nga atanga, ka whakamahia te polymorphism, ka kaha ake te whakatinanatanga.
Ahakoa ko Effective Java na Joshua Bloch te tohutohu ki te whiriwhiri i te titonga i runga i te tuku iho.
Barbara Liskov Kaupapa Whakakapi (LSP)
Ko tetahi atu maataapono mai i te kete taputapu SOLID. E kii ana me whakakapi nga momo iti mo te momo matua. Arā, ko nga tikanga me nga mahi e mahi tahi ana me te superclass me kaha ki te mahi me te kore raru o ona karaehe.
Ko te LSP e hono ana ki te maapono kawenga kotahi me te kaupapa kawenga mahi tahi. Mena he maha ake nga mahi a te karaehe atu i te karaehe iti, karekau e tautokohia e te hunga o muri etahi o nga mahi, ka takahia tenei kaupapa.
Anei tetahi waahanga waehere e whakahē ana ki te LSP.
Ko te tikanga horahanga(Rectangle r) he tatau i te horahanga o te Rectangle. Ka tutuki te papatono i muri i te mahi i te Tapawha na te mea ehara ko te Tapawha i te Tapawhā i konei. E ai ki te maapono LSP, ko nga mahi e whakamahi tohutoro ana ki nga karaehe turanga me kaha ki te whakamahi i nga taonga o nga karaehe i ahu mai me te kore he tohutohu taapiri.
Ko tenei maataapono, he whakamaramatanga motuhake o te momo iti, na Barbara Liskov i whakatakoto i roto i te kaupapa matua o te huihuinga i te tau 1987 i tapaina ko "Data Abstraction and Hierarchy," no reira tona ingoa.
Atanga Matapono Ritua (ISP)
Ko tetahi atu maapono SOLID. E ai ki a ia, he atanga kaore i te whakamahia kia kaua e whakatinanahia. Ko te whai i tenei maataapono ka awhina te punaha ki te noho ngawari me te pai mo te whakahou i te wa ka huri nga huringa ki te arorau whakahaere.
I te nuinga o nga wa, ka puta tenei ahuatanga ina he maha nga mahi a te atanga i te wa kotahi, ka hiahia te kaihoko ki tetahi o enei.
I te mea he mahi uaua te tuhi atanga, he uaua te whakarereke i muri i te otinga o te mahi me te kore e pakaru tetahi mea.
Ko te painga o te kaupapa ISP i Java ko nga tikanga katoa me whakatinana i te tuatahi, katahi ka taea e nga karaehe te whakamahi. No reira, ma te maapono ka taea te whakaiti i te maha o nga tikanga.
Papatonotanga mo te atanga, ehara i te whakatinanatanga
He maamaa nga mea katoa i konei mai i te taitara. Ko te whakamahi i tenei maataapono ka arahi ki te hanga i te waehere ngawari ka taea te mahi me tetahi whakatinanatanga hou o te atanga.
Me whakamahi koe i te momo atanga mo nga taurangi, mo nga momo whakahoki, mo te momo tohenga tikanga ranei. Ko tetahi tauira ko te whakamahi i te SuperClass kaua ko SubClass.
Koina:
Rarangi tau= getNumbers();
Engari kaore:
ArrayList tau = tikiNumbers();
Anei he whakatinanatanga whaitake o nga mea kua korerohia i runga ake nei.
Te kaupapa o te tuku
He tauira noa ko nga tikanga rite() me te hashCode() i Java. Ina e tika ana kia whakatauritea nga mea e rua, ka tukuna tenei hohenga ki te karaehe e rite ana, kaua ki te kaihoko.
Ko te painga o te kaupapa ko te kore he taarua o te waehere, he ngawari noa te whakarereke i te whanonga. Ka pa ano ki te tuku huihuinga.
Ko enei maataapono katoa ka taea e koe te tuhi i nga waehere ngawari, ataahua me te pono me te whakakotahitanga teitei me te hononga iti. Ko te tikanga, he pai te ariā, engari mo te kaiwhakawhanake ki te whakamahi i te matauranga kua riro, me mahi. Kia mohio koe ki nga maataapono OOP, ko to mahi ka whai ake ko te ako i nga tauira hoahoa hei whakaoti rapanga whanaketanga rorohiko noa.