Na Makuahine
SOLID he aha nā kumumanaʻo 5 o ka hoʻolālā hoʻonohonoho ʻana i nā mea
- Na: Ercole Palmeri
- Māhele aʻo, Nā Papahana, palapala aʻoaʻo

He akimona ʻo SOLID, e kuhikuhi ana i nā kumumanaʻo ʻelima o ka hoʻolālā ʻana i nā mea (OOD a i ʻole ʻo OOP). ʻO kēia nā kulekele i hiki i nā mea hoʻomohala ke hoʻohana e hana i nā polokalamu maʻalahi e mālama, mālama a hoʻolōʻihi. ʻO ka hoʻomaopopo ʻana i kēia mau manaʻo e hoʻolilo iā ʻoe i mea hoʻomohala maikaʻi aʻe a kōkua iā ʻoe e hōʻalo i nā pilikia hoʻokele polokalamu. He aha ke ʻano o ka programmer maikaʻi?
ʻO kēlā me kēia mea me kahi ʻike i ka hoʻolālā polokalamu e hoʻokolokolo i ka code software i kākau ʻia e nā poʻe ʻē aʻe, e hoʻohana ana i nā palena hoʻokolokolo e pili ana i kā lākou ala ʻoihana.
Ma loko o kaʻu ʻoihana ʻoihana, ua ʻike wau i nā mea hoʻomohala he nui, a ua ʻike wau i mau kaukani laina o ke code a i ka wā e pono ai wau e loiloi i ka mākau o ka mea hoʻomohala nānā nui wau i nā mea ʻelua:
- ʻO ka maʻalahi i ka heluhelu ʻana i ke code;
- Pehea paha e holo ai kā lākou code a holo i ka manawa.
ʻO ka mea pōmaikaʻi, aia kekahi mau kumumanaʻo a i ʻole nā loina e maʻalahi ai e ʻoi aku ka maikaʻi ma ke coding.
ʻo ka inoa inoa ʻo SOLID no:
S: kumu o ke kuleana hoʻokahi
O: kumu paʻa hāmama
L: Liskov kumukānāwai kumukānāwai
I: Ke kumu o ka hoʻokaʻawale ʻana o ke kikowaena
D: Ke kumu o ka hoʻohuli ʻana i ka hilinaʻi
E hoʻomaka kākou e ka luʻu ʻana i ke kumuhana SOLID mua, ʻo ia ka
Kumumanaʻo kuleana kuleana hoʻokahi
Hoʻokahi wale nō kumu e hoʻololi ai kahi papa (a i ʻole module) e hoʻololi ai.
He mea maʻalahi ka manaʻo ponoʻī, akā no ka hoʻokō ʻana i kēia maʻalahi hiki ke paʻakikī loa ke ala hoʻokō. Hoʻokahi wale nō kumu e hoʻololi ai i kahi papa.
Akā no ke aha?
No ke aha he mea nui loa e loaʻa hoʻokahi wale nō kumu e loli ai?
ʻO kahi laʻana, inā aia ʻelua mau kumu like ʻole no ka loli, hiki i ka manaʻo ke hana ʻelua mau kime ʻē aʻe i ke code hoʻokahi no nā kumu ʻelua. E hoʻokō kēlā me kēia i kā lākou hopena ponoʻī, kahi i kahi ʻōlelo i hōʻuluʻulu ʻia (e like me C ++, C # a i ʻole Java), hiki ke alakaʻi i nā modula i kūlike ʻole me nā kime ʻē aʻe a i ʻole nā ʻāpana ʻē aʻe o ka noi.
ʻO kekahi laʻana, inā ʻoe e hoʻohana nei i kahi ʻōlelo i unuhi ʻia, pono paha ʻoe e hōʻoia hou i ka papa like a i ʻole ka module no nā kumu like ʻole. ʻO ka manaʻo o kēia ka hana hou aku, ka manawa a me ka ikaika no ka kaohi pono.
ʻO ka ʻike ʻana i kahi hiʻohiʻona i kahi papa a i ʻole ke module e ʻoi aku ka paʻakikī ma mua o ka nānā wale ʻana i kahi papa inoa e holo ai nā hoʻokolohua
Akā e hoʻāʻo e noʻonoʻo mai kahi ʻike ʻenehana liʻiliʻi, ʻo ia, e hoʻāʻo e kālailai i ka mea hoʻohana o kā mākou papa a i ʻole ka module, ʻo ia ka mea nāna e hoʻohana. ʻO kahi hiʻohiʻona nui e pono mau iā mākou e noʻonoʻo, ʻo ka ʻoiaʻiʻo ʻo nā mea hoʻohana o ka noi a i ʻole ka ʻōnaehana a mākou e hoʻomohala nei i lawelawe ʻia e kekahi module ponoʻī e noi i nā hoʻololi iā ia. E noi ka poʻe i lawelawe e hoʻololi i ka papa a i ʻole ka module.
Kekahi mau laʻana o nā modula a me kā lākou hoʻohana:
- Māhele mālama: hana ʻia ka mea hoʻohana e nā luna ʻikepili pūnaewele a me nā mea hoʻopaʻa lako polokalamu.
- Hōʻike hōʻike: ʻo ka mea hoʻohana i nā limahana o ke keʻena, nā mea helu kālā a me nā hana.
- Module helu helu uku no kahi ʻōnaehana hoʻokau uku: hiki i nā mea hoʻohana ke hoʻopili i nā loio, nā luna a me nā mea helu kālā.
- Module ʻimi huaʻōlelo no kahi ʻōnaehana hoʻokele waihona: hiki i nā mea hoʻohana ke hōʻike ʻia e ka waihona puke a i ʻole nā mea kipa a me nā mea kūʻai aku o ka waihona iā ia iho.
No laila inā ʻimi ka hana mua i nā mea hana keaka a i ʻole ka mea hana keaka ʻo interlocutor me ka module, hoʻohui i nā poʻe me nā kuleana āpau ke paʻakikī. I kahi hui liʻiliʻi, hiki i kekahi kanaka ke pāʻani i nā kuleana he nui i ka manawa i kahi ʻoihana nui hiki i nā poʻe he nui i loaʻa kahi kuleana hoʻokahi.
Me he mea lā he ʻoi aku ke kūpono e hoʻomaopopo i nā kuleana, ma mua o ka poʻe a mea hoʻohana paha.
No laila:
- ho'ākāka ka mea hoʻohana o ka ʻōnaehana polokalamu i nā kumu o ka loli;
- ke kuleana he ʻohana o nā hana e māʻona ai nā pono o kahi mea hana keaka, ʻo ia hoʻi, ka hoʻohana ʻōnaehana;
- nā mea hana keaka, lilo ka mea hoʻohana i kumu hoʻololi no ka ʻohana o nā hana i pono e māʻona i ka makemake o ka mea hoʻohana;
- ka ulu o nā pono o ka mea hoʻohana, alakaʻi i ka evolution o ka hana;
E nānā i kekahi mau laʻana
Inā paha he papa Buke kā mākou e hoʻopili ana i ka manaʻo o kahi puke a me kāna hana.
puke puke {
hana getTitle () {
hoʻihoʻi "He puke nui";
}
hana getAuthor () {
hoʻihoʻi iā "Alessandro Baricco";
}
hana ʻaoʻao aʻe () {
// ʻaoʻao aʻe
}
hana printCurrentPage () {
echo "ʻikepili o ka ʻaoʻao o kēia manawa";
}
}
He papa maʻamau loa kēia. He puke kā mākou, a hiki i ka papa ke hāʻawi iā mākou i ke poʻo inoa, hiki iā lākou ke hāʻawi iā mākou i ka mea kākau, a hiki iā lākou ke neʻe i mua. ʻO ka hope, hiki iā ia ke paʻi i ka ʻaoʻao o kēia manawa ma ka pakuhi.
Eia nō naʻe, aia kekahi pilikia liʻiliʻi.
Ke noʻonoʻo nei e pili ana i nā mea hana keaka i ka hoʻokele o ka mea Buke, ʻo wai lākou?
Hiki iā mākou ke noʻonoʻo maʻalahi i nā mea hana ʻē aʻe ʻelua ma aneʻi: Hoʻoponopono puke (e like me ka hale waihona puke) ' Mīkini hoʻoili ʻikepili (e like me pehea mākou e makemake ai e hāʻawi i ka ʻike i ka mea hoʻohana: ma ka papakaumaka, ʻoihana mea hoʻohana kiʻi, ʻokoʻa hoʻohana huaʻōlelo wale nō, paʻi paha).
No laila, he ʻelua mau mea hana keaka ʻokoʻa e launa pū ana me ka papa.
I kahi pōkole e huikau kēia papa ma waena o:
- kūleʻa ʻoihana me
- ka hōʻike
hiki i kēia mea ke lilo i pilikia ma muli o ka haki ia o ke kumu kuleana hoʻokahi (SRP).
Pehea e hiki ai iā mākou ke loli, pehea mākou e hoʻomaikaʻi ai i kēia code e mahalo ai i ke kumumanaʻo o ke kuleana hoʻokahi?
E nānā i ke code aʻe:
puke puke {
hana getTitle () {
hoʻihoʻi iā "Oceano Mare";
}
hana getAuthor () {
hoʻihoʻi iā "Alessandro Baricco";
}
ʻaoʻao huli ʻaoʻao () {
// ʻaoʻao aʻe
}
hana getCurrentPage () {
echo "ʻikepili o ka ʻaoʻao o kēia manawa";
}
}
interface mīkini paʻi {
ʻaoʻao hoʻopuka hana ($ ʻaoʻao);
}
hoʻokomo ʻo StampaLibro papa i ka mīkini paʻi {
nā palapala hana ($ ʻaoʻao) {
echo $ ʻaoʻao;
}
}
hoʻokomo ka papa htmlPrinter mīkini paʻi {
nā palapala hana ($ ʻaoʻao) {
'ōlelo' '. ʻaoʻao $. ' ';
}
}
Hōʻike kēia laʻana maʻalahi loa pehea e hoʻokaʻawale ai i ka hōʻike mai ka loiloi ʻoihana, a i ka hoʻokō ʻana me ka SRP hāʻawi ia i nā maikaʻi maikaʻi loa i ka maʻalahi o kā mākou papahana.
E nānā i kahi hiʻohiʻona ʻē aʻe:
ʻO kahi laʻana e like me ka mea i luna ke hiki i kahi mea ke mālama a lawe iā ia iho mai ka hōʻike.
puke puke {
hana getTitle () {
hoʻihoʻi iā "Oceano Mare";
}
hana getAuthor () {
hoʻihoʻi iā "Alessandro Baricco";
}
ʻaoʻao huli ʻaoʻao () {
// ʻaoʻao aʻe
}
hana getCurrentPage () {
hoʻihoʻi "ʻike i ka ʻaoʻao o kēia manawa";
}
mālama hana () {
$ filename = '/ palapala /'. $ kēia-> loaʻaTitolo (). '-'. $ kēia-> getAuthor ();
file_put_contents ($ filename, serialize ($ kēia));
}
}
E like me ma mua, ma aneʻi hiki iā mākou ke ʻike i nā ʻano mea hana keaka like Hoʻoponopono puke (e like me ka hale waihona puke) ' Hoʻomau. Ke makemake mākou e hoʻololi i ke ala a mākou e hele ai mai kēlā ʻaoʻao a kēia ʻaoʻao, pono mākou e hoʻololi i kēia papa. Hiki iā mākou ke loaʻa i kekahi mau kumu no ka loli.
puke puke {
hana getTitle () {
hoʻihoʻi iā "Oceano Mare";
}
hana getAuthor () {
hoʻihoʻi iā "Alessandro Baricco";
}
ʻaoʻao huli ʻaoʻao () {
// ʻaoʻao aʻe
}
hana getCurrentPage () {
hoʻihoʻi "ʻike i ka ʻaoʻao o kēia manawa";
}
}
papa SimpleFilePersistence {
mālama hana (puke $ puke) {
$ filename = '/ palapala /'. $ puke-> getTitle (). '-'. $ puke-> getAuthor ();
file_put_contents ($ filename, serialize ($ puke));
}
}
ʻO ka neʻe ʻana i ka hana hoʻomau i kahi papa ʻē aʻe e hoʻokaʻawale ʻokoʻa i nā kuleana a e noa mākou e kūleʻa i nā ʻano hoʻomau me ka ʻole o ka papa Book. ʻO kahi laʻana, he mea nui ʻole ka hoʻokomo ʻana i ka papa o ka DatabasePersistence, a ʻaʻole e loli kā mākou loina ʻoihana e pili ana i nā hana puke.
E hoʻomau i ka heluhelu ʻana i ke kumuhana ʻelua Open / Closed ->