Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Matetika aho no mihaona amin'ireo mpamorona izay tsy nandre momba ny fitsipika SOLID (isika niresaka momba azy ireo tamin'ny antsipiriany teto. β€” Transl.) na fandaharana miompana amin'ny zavatra (OOP), na efa nandre momba azy ireo, fa aza ampiasaina amin'ny fampiharana. Ity lahatsoratra ity dia mamaritra ny tombotsoan'ny fitsipika OOP izay manampy ny mpamorona amin'ny asany andavanandro. Ny sasany amin'izy ireo dia fanta-daza, ny hafa tsy dia be loatra, ka ny lahatsoratra dia ho ilaina ho an'ny beginners sy za-draharaha programmer.

Mampahatsiahy izahay: ho an'ny mpamaky Habr rehetra - fihenam-bidy 10 roubles rehefa misoratra anarana amin'ny taranja Skillbox rehetra mampiasa ny kaody fampiroboroboana Habr.

Skillbox dia manoro hevitra: Fampianarana an-tserasera "Java developer".

MAINA (Aza mamerina ny tenanao)

Fitsipika iray tena tsotra, izay mazava tsara amin'ny anarana hoe: "Aza mamerina ny tenanao." Ho an'ny programmer, midika izany fa ilaina ny manalavitra ny code duplicate, ary koa ny fahafahana mampiasa abstraction amin'ny asany.

Raha misy fizarana roa miverimberina ao amin'ny kaody, dia tokony hatambatra ho fomba iray izy ireo. Raha ampiasaina mihoatra ny indray mandeha ny soatoavina hardcode iray, dia mendrika ny hanova azy ho tsy miova ho an'ny daholobe.

Ilaina izany mba hanatsorana ny kaody sy hanamora ny fikojakojana, izay no tena tanjona amin'ny OOP. Tsy tokony hampiasa be loatra ny sendikΓ  koa ianao, satria ny kaody mitovy dia tsy handalo fanamarinana miaraka amin'ny OrderId sy ny SSN.

Encapsulating Changes

Ny ankamaroan'ny vokatra rindrambaikon'ny orinasa dia mivoatra hatrany. Midika izany fa mila fanovana ny code, mila tohanana. Azonao atao ny manamora ny fiainanao amin'ny fampiasana encapsulation. Izany dia ahafahanao mitsapa sy mitazona ny fototry ny code misy anao. Ity misy ohatra iray.

Raha manoratra amin'ny Java ianao dia manendre fomba manokana sy variables amin'ny alΓ lan'ny default.

Fitsipika misokatra / mihidy

Ity fitsipika ity dia mora tadidina amin'ny famakiana ity fanambarana manaraka ity: "Ny sampana rindrambaiko (kilasy, modules, functions, sns.) dia tokony hisokatra ho an'ny fanitarana, fa hikatona ho an'ny fanovana." Amin'ny fampiharana, midika izany fa afaka mamela ny fitondran-tenany izy ireo raha tsy manova ny code source.

Zava-dehibe ny fitsipika rehefa mila fanavaozana ny kaody ny fanovana amin'ny kaody loharano, ny fitiliana unit ary ny fomba fiasa hafa. Ny fehezan-dalΓ na manaraka ny fitsipika misokatra / mihidy dia tsy miova rehefa hitarina, noho izany dia vitsy kokoa ny olana momba izany.

Ity misy ohatra iray amin'ny code izay mandika io fitsipika io.

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Raha mila manova zavatra ao anatin'izany ianao, dia mila fotoana be izany, satria tsy maintsy ovaina ny fizarana rehetra amin'ny code izay misy ifandraisany amin'ny sombiny.

Raha ny marina, ny fisokafana-akatona dia iray amin'ireo fitsipiky ny SOLID.

Fitsipiky ny andraikitra tokana (SRP)

Fitsipika iray hafa avy amin'ny SOLID set. Voalaza ao fa β€œtsy misy afa-tsy antony iray ihany no mahatonga ny fiovan’ny kilasy”. Ny kilasy dia mamaha olana iray ihany. Mety misy fomba maromaro izy io, fa ny tsirairay amin'izy ireo dia ampiasaina hamahana olana iraisana fotsiny. Ny fomba sy ny fananana rehetra dia tokony hampiasa izany ihany.

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Ny sandan'ity fitsipika ity dia mamaha ny fifandraisana eo amin'ny singa rindrambaiko tsirairay sy ny code. Raha manampy asa mihoatra ny iray amin'ny kilasy iray ianao, dia mampiditra fifandraisana misy eo amin'ireo fiasa roa ireo. Noho izany, raha manova ny iray amin'izy ireo ianao, dia mety hanimba ny faharoa, izay mifandray amin'ny voalohany. Ary midika izany fa mampitombo ny tsingerin'ny fitsapana mba hamantarana mialoha ny olana rehetra.

Fitsipika fiankinan-doha (DIP)

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Etsy ambony dia ohatra kaody izay iankinan'ny AppManager amin'ny EventLogWriter, izay mifandray akaiky amin'ny AppManager. Raha mila fomba hafa hanehoana fampandrenesana ianao, na push, SMS na mailaka, dia mila manova ny kilasy AppManager ianao.

Ny olana dia azo vahana amin'ny fampiasana DIP. Noho izany, raha tokony ho AppManager, dia mangataka EventLogWriter izahay, izay ampidirina amin'ny alΓ lan'ny rafitra.

Ny DIP dia ahafahana manolo mora ny maody tsirairay amin'ny hafa amin'ny alΓ lan'ny fanovana ny maody miankina. Izany dia ahafahana manova ny module iray tsy misy fiantraikany amin'ny hafa.

Famoronana fa tsy lova

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetraMisy fomba roa lehibe ahafahana mampiasa indray ny kaody: lova sy composition, izay samy manana ny tombony sy ny tsy fahampiana. MazΓ na ilay faharoa no tiana kokoa satria moramora kokoa.

Ny famoronan-javatra dia manome anao fahafahana manova ny fitondran-tenan'ny kilasy iray amin'ny fotoana fandehanana amin'ny alΓ lan'ny fametrahana ny fananany. Rehefa mampihatra ny interface dia ampiasaina ny polymorphism, izay manome fampiharana mora kokoa.

Na ny Java Effective nataon'i Joshua Bloch aza dia manoro hevitra ny hisafidy ny famoronana noho ny lova.

Barbara Liskov Fitsipika fanoloana (LSP)

Fitsipika iray hafa avy amin'ny kitapo fitaovana SOLID. Lazainy fa ny subtype dia tsy maintsy azo soloina amin'ny supertype. Izany hoe, ny fomba sy ny fiasa miasa miaraka amin'ny superclass dia tokony ho afaka miasa tsy misy olana amin'ny subclasses.

Ny LSP dia mifamatotra amin'ny foto-kevitry ny andraikitra tokana sy ny fitsipiky ny andraikitra iombonana. Raha toa ka manome fiasa bebe kokoa noho ny subclass ny kilasy iray, dia tsy hanohana ny sasany amin'ireo fiasa ity farany, mandika io fitsipika io.

Ity misy sombin-kaody mifanohitra amin'ny LSP.

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Ny fomba faritra (Rectangle r) dia manisa ny velaran'ny Rectangle. Hidona ny programa aorian'ny fanatanterahana ny Kianjan'ny Kianjan'ny Kianjan'ny Kianjan'ny Kianjan'ny tsy Rectangle eto. Araka ny fitsipiky ny LSP, ny fiasa izay mampiasa references amin'ny kilasy fototra dia tokony ho afaka mampiasa zavatra avy amin'ny kilasy tsy misy toromarika fanampiny.

Ity fitsipika ity, izay famaritana manokana ny subtype, dia natolotr'i Barbara Liskov tao amin'ny fehin-kevitry ny fihaonambe tamin'ny 1987 mitondra ny lohateny hoe "Data Abstraction and Hierarchy," noho izany ny anarany.

Fitsipiky ny fisarahan'ny interface (ISP)

Fitsipika SOLID hafa. Araka izany, ny interface izay tsy ampiasaina dia tsy tokony hampiharina. Ny fanarahana ity fitsipika ity dia manampy ny rafitra hijanona ho malefaka sy mety amin'ny refactoring rehefa misy fanovana natao amin'ny lojika miasa.

Matetika indrindra, izany toe-javatra mitranga rehefa ny interface tsara dia ahitana asa maro indray mandeha, ary ny mpanjifa mila ny iray amin'izy ireo.

Satria asa sarotra ny fanoratana interface tsara, ny fanovana azy io rehefa vita ny asa nefa tsy manapaka na inona na inona dia ho fanamby.

Ny tombony amin'ny fitsipiky ny ISP amin'ny Java dia ny fomba rehetra dia tsy maintsy ampiharina aloha, ary avy eo dia azo ampiasaina amin'ny kilasy. Noho izany, ny fitsipika dia mamela ny hampihenana ny isan'ny fomba.

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Programming ho an'ny interface, fa tsy ny fampiharana

Mazava ny zava-drehetra eto amin'ny anarana. Ny fampiharana an'io fitsipika io dia mitarika amin'ny famoronana kaody mora ampiasaina izay afaka miasa amin'ny fampiharana vaovao amin'ny interface.

Tokony hampiasa ny karazana interface tsara ianao ho an'ny variables, karazana fiverenana, na karazana argument method. Ohatra iray ny fampiasana SuperClass fa tsy SubClass.

Izany hoe:

Lisitra isa= getNumbers();

Fa tsy:

ArrayList isa = getNumbers();

Ity misy fampiharana azo ampiharina amin'izay resahina etsy ambony.

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Fitsipiky ny delegasiona

Ny ohatra mahazatra dia ny equals() sy ny hashCode() fomba ao Java. Rehefa ilaina ny mampitaha zavatra roa, ity hetsika ity dia omena amin'ny kilasy mifanaraka amin'izany fa tsy amin'ny mpanjifa.

Ny tombony amin'ny fitsipika dia ny tsy fisian'ny dika mitovy amin'ny kaody ary mora ny manova fihetsika. Mihatra amin'ny delegasiona hetsika ihany koa izany.

Fitsipika 10 momba ny fandaharana miompana amin'ny zavatra tokony ho fantatry ny mpamorona rehetra

Ireo fitsipika rehetra ireo dia ahafahanao manoratra kaody mora kokoa, tsara tarehy ary azo itokisana miaraka amin'ny firaisankina ambony sy fampifandraisana ambany. Mazava ho azy fa tsara ny teoria, fa ho an'ny mpamorona iray tena mampiasa ny fahalalana azo dia ilaina ny fampiharana. Raha vantany vao nahafehy ny fitsipiky ny OOP ianao, ny dingana manaraka dia ny mianatra lamina famolavolana hamahana ny olan'ny fampivoarana rindrambaiko mahazatra.

Skillbox dia manoro hevitra:

Source: www.habr.com

Add a comment