Komponado por la savo de la heredaĵo

Hodiaŭ, ni parolos pri arkitekturo de programaro. js

La koncepto de heredo estas koncepto, ke oni devas regi kiam oni uzas lingvo objektoSe vi volas organizi vian kodon ĉirkaŭ objektoj, ekzistas forta ebleco ke vi estos alfrontita kun la bezono uzi heredaĵo.

Kvankam la heredaĵo alportas multan innegable avantaĝojn, ĉi tiu ne estas la respondo al ĉiuj problemoj.

Se vi falas en la indiscriminate uzo de heredo, ekzistas alta ŝanco ke vi mordiez fingroj kelkaj monatoj poste, kiam vi devas evolui la funkcia amplekso de via apliko. Kompreneble ĝi estas tentanta por diri,"Se mi heredas de Foo, tiam mi havas ? iu de ? ia ? efa? o sen ajna peno.". Sed en la sama tempo, vi volas ligi tre forte al ambaŭ de viaj klasoj kaj se ili venas al malkonsentas en la estonteco vi ne estos kapabla ke vi nur diri"Bone, ili dividas la saman kiam kelkaj trajtoj". Vi'll tiam komencas konscii, ke ĝi estas nun malfacila al testo ĉiu de ĉi tiuj klasoj, kaj ke ĝi estas for de evidenta al la fendo. La problemoj komencas. La konzerno por programistoj ne spertis, ke unu ne konscias ? i tiu fakto, ke en la mezo de projekto aŭ kiam la kliento volas fari ŝanĝon por la operacio de ekzistanta elemento.

Vi povas kredi al mi pri vorto, ĝi ĉiam finiĝas per atingi.

Ĝi estas necesa por povi detekti la malsamaj tipoj de rilatoj kiuj povas ekzisti inter klasoj. Klaso povas esti ligita al unu la alian per tri tipoj de rilatoj: La komponado ĉiam estos pli fleksebla ol mixins kaj ne estos rekte rilatita al la klaso ke la gastigantoj en kontrasto al la heredo. Sekve, ĝi estis nun la veturiloj havas rapideco, la aŭto ne povas ruliĝi kaj la helikopteroj povas flugi. Nun lasu nin diri, ke oni deziras krei unu klaso por la ebenoj teknike povas ruliĝi kaj flugi. Nia aviadilo estas duonvoje inter la aŭto kaj la helikoptero. Kompreneble, ni povus uzi mixins, sed tiu estas nek pli nek malpli ol unu formo de multobla heredo. Ĝi estus multe pli bona ol nia nuna solvo kaj volus solvi nian problemon. La alia solvo estus uzi la komponado, kiu permesas vin izolas kondutoj en specialigitaj klasoj. Ni estos tiam uzi ekzemplojn de tiuj klasoj en la aliaj klasoj. Ĝi sekve ebligas havi klasoj pura, konciza, sen metodoj kiuj estas superflua, kaj tre facile povas testi. Uzi la komponado, ĝi estas havi aliron al la plena potenco de diligenta klaso manipuli objekton.

Do, ni povas meti ĝin en loko: mi donas al vi, ke ĉi tiu solvo estas pli parolema ol mixins sed ĝi estas ankaŭ multe pli fleksebla kaj potenca, kaj en praktiko verŝajne plej facila al testo.

Por la pruvo, mi inicializado la objektoj kaj Radoj Flugiloj sur la muŝo, sed en praktiko ĝi emas fari ĉi tiun laboron de inicialización en la pravalorizi metodo kiu permesus havi persistaj objektoj kaj eviti la problemojn de konkurenco. En praktiko, neniu kialo por sekvi preciza metodo, kial uzi la komponado, mixins, aŭ heredo en ekskluziva maniero kiam vi povas miksi la tri. Li devas scii, kiel adapti kaj uzi la solvo, ke estos pli fleksebla. Ni do uzu la heredo kiam ĝi estas necesa, memoru,"desarrollador estas persono". Ni estos procedi al la mixins, kiam oni estas en la situacio,"desarrollador estas aganta kiel dungito".

Ĝi verŝajne estos al la komponado se tiu rilato rezultas esti io de kompleksa, objekto postulanta diligentan klaso.

Resumi la enhavon de ĉi tiu artikolo, pensi de viaj klasoj, tiel ke ili estas la plej modula kiel ebla, ne batos vin mem en skatolo de kiu vi ne povas eventuale eliri, memori klare delinear la respondecoj de ĉiu. Se via testoj estas malfacila efektivigi, ĝi estas ofte la signo de arkitektura afero ke vi devus meti pulon en la orelon. Sisi, ĝi estas ebla.