{"id":247584,"date":"2023-06-08T11:14:00","date_gmt":"2023-06-08T08:14:00","guid":{"rendered":"https:\/\/inform.click\/disainimudelid-algajatele\/"},"modified":"2023-06-08T11:58:00","modified_gmt":"2023-06-08T08:58:00","slug":"disainimudelid-algajatele","status":"publish","type":"post","link":"https:\/\/inform.click\/et\/disainimudelid-algajatele\/","title":{"rendered":"Disainimudelid algajatele"},"content":{"rendered":"<p>\n  Kui olete juba kirjutanud programmid suurte\/v\u00e4ikeste toodete v\u00f5i tarkvararakenduste jaoks, olete suure t\u00f5en\u00e4osusega kasutanud palju kujundusmustreid&#8230; kuigi on v\u00f5imalik, et need ei pruugi olla \u00fcks enimkasutatud \/ standardseid kujundusmustreid.\n<\/p>\n<p>\n  Aga jah, kujundusmustri rakendamisel ja kujundusmustri &#8220;kasutamisel&#8221; on ilmne erinevus&#8230; m\u00f5lemal juhul saab disainimustritega t\u00f6\u00f6tav inimene sellest aru v\u00f5i saab sellest kergesti aru.\n<\/p>\n<p>\n  Asi on selles, et disainimustrid pole programmeerijatele uued.\n<\/p>\n<p>\n  Selles allolevas artiklis p\u00fc\u00fcan selgitada disainimustreid nende p\u00f5hit\u00f5desid ja uurime erinevatest mustritest, n\u00e4idetest jms \u00fchest teisest artiklist.\n<\/p>\n<p>\n  Mis on kujundusmuster?\n<\/p>\n<p>\n  <strong>Alustada\u2026<\/strong>\n<\/p>\n<p>\n  Arvan, et parim viis disainimustrite m\u00f5istmise alustamiseks on m\u00f5ista mittetehnilisi mustreid, mida me teadlikult\/teadmatult oma igap\u00e4evaelus j\u00e4rgime.\n<\/p>\n<p>\n  N\u00e4iteks v\u00f5tame palju vaba t\u00f6\u00f6koha jaoks esitatud CV-sid. K\u00f5igi CV ei n\u00e4e v\u00e4lja \u00fchesugune&#8230; kuigi nad k\u00f5ik kipuvad tegema sama asja, see t\u00e4hendab lugejale, mida nad oskavad, v\u00f5i kuidas ta v\u00f5iks sellele t\u00f6\u00f6le sobida.\n<\/p>\n<p>\n  Enamik neist, kes esitavad CV t\u00f6\u00f6kohtadele, teavad, et nad peavad esitama CV koos konkreetse teabega vormindatud Wordi dokumendis.\n<\/p>\n<p>\n  See\u2026 on muster, mille kohaselt k\u00f5ik esitavad CV, milles on v\u00e4ljendatud teatud kogum teavet.\n<\/p>\n<p>\n  Kui soovite\u2026 nimetage seda mallideks, mitte mustriteks. Kujundusmallid.\n<\/p>\n<p>\n  P\u00e4ris elus on palju selliseid asju, mis on mustrid. M\u00f5nele inimesele meeldivad j\u00e4rgmised n\u00e4ited:\n<\/p>\n<p>\n  K\u00f5ik kokad \u00fcle maailma k\u00fcpsetavad pitsat v\u00f5i friikartuleid \u00fchtemoodi. Kuigi nad v\u00f5ivad seda t\u00e4iendada \/ maitsestada erinevalt. See on muster.\n<\/p>\n<p>\n  Iga auto disain j\u00e4rgib p\u00f5hilist disainimustrit, nelja ratast, rooliratast, p\u00f5hiajami s\u00fcsteemi nagu gaasipedaal-katkestus-sidur jne.\n<\/p>\n<p>\n  K\u00f5ik korduvalt ehitatud\/toodetud asjad j\u00e4rgivad oma disainis paratamatult mustrit&#8230; olgu selleks siis autod, pizza, pangaautomaadid, mis iganes&#8230; isegi hambahari.\n<\/p>\n<p>\n  Disainid, millest on peaaegu saanud tarkvara m\u00f5ne loogika\/mehhanismi\/tehnika kodeerimise standardviis, on seet\u00f5ttu hakatud nimetama \u2013 ja seega \u2013 uuritud tarkvarakujundusmustritena.\n<\/p>\n<h3>\n  Miks on disainimuster oluline?<br \/>\n<\/h3>\n<p>\n  P\u00f5him\u00f5tteliselt kahel p\u00f5hjusel:\n<\/p>\n<ol>\n<li>\n    <strong>Et j\u00e4\u00e4da standardi juurde<\/strong>\n  <\/li>\n<li>\n    <strong>Arengu kiirendamiseks<\/strong>\n  <\/li>\n<\/ol>\n<p>\n  Selgitan \u00fcksikasjalikult.\n<\/p>\n<p>\n  Esiteks n\u00e4eme, miks standardmustri j\u00e4rgimine on huvitav.\n<\/p>\n<p>\n  V\u00f5tame n\u00e4iteks CV-de loendi, millest me varem r\u00e4\u00e4kisime.\n<\/p>\n<p>\n  V\u00f5ib olla \u00fcks v\u00f5i kaks kandidaati, kes saadavad oma t\u00f6\u00f6taotlused meilitekstiga ilma korraliku vorminguta, ilma e-kirjade manusteta jne, .. need \u00fcks v\u00f5i kaks taotlejat ei j\u00e4rgi mustrit. ja EI t\u00f5en\u00e4oliselt l\u00f5peta t\u00f6\u00f6ga\u2026. miks? Sest nad kalduvad k\u00f5rvale v\u00e4ljakujunenud mustrist, mis ei pruugi meeldida inimestele, kes valivad t\u00f6\u00f6\u00fclesannete nimekirja.\n<\/p>\n<h5>\n  Kas pole kedagi, kes kaldub mustrist k\u00f5rvale ja muutub &#8220;lahedaks&#8221;? Kas see pole mitte innovatsioon?<br \/>\n<\/h5>\n<p>\n  Jah, on aegu, kus v\u00e4ga erinevalt esitatud CV saab t\u00f6\u00f6 selle eest, et erineb teistest. Tavaliselt olen kuulnud veebidisaineritest, kes sattusid parimatele t\u00f6\u00f6kohtadele, kuna nad koostasid ja esitlesid oma t\u00f6\u00f6dest CD-filmi v\u00f5i tegid oma t\u00f6\u00f6d selgitava animatsioonitegelase, olid selle oma blogisse \u00fcles pannud ja muud taolist.\n<\/p>\n<p>\n  Aga.. see on eksperimenteerimine (Innovatsioon tuleb edukatest katsetest).\n<\/p>\n<p>\n  Tarkvaraarenduses ei saa te enamasti lubada katsetamist ajajoone surve, ootuste jms t\u00f5ttu, kuid jah, m\u00f5nikord v\u00f5imaldavad m\u00f5ned huvitavad projektid katsetada.\n<\/p>\n<p>\n  Tarkvaras ei saa me teha p\u00f5hilisi asju, nagu pangahoius\u2026 101 viisil\u2026 pangahoiuse t\u00f6\u00f6tlemiseks on vaid m\u00f5ned viisid. Seega on m\u00f5ttekas j\u00e4rgida v\u00e4ljakujunenud ja testitud mustrit.\n<\/p>\n<p>\n  Samuti on enamikul disainimustritel variatsioonid&#8230; m\u00f5ned variatsioonid on nii populaarsed, et variatsioonid on ka uus mustri standardt\u00fc\u00fcp.\n<\/p>\n<p>\n  T\u00e4nap\u00e4eval eeldatakse, et tarkvaraprojektid j\u00e4rgivad (v\u00e4hemalt kaudselt) turul juba v\u00e4ljakujunenud sarnase toote\/tarkvara disaini.\n<\/p>\n<p>\n  See on koht, kus standardse kodeerimisstiili v\u00f5i kujundusmustri j\u00e4rgimine aitab tarkvaraarendust &#8230; kiirendada arendust, eemaldada liigsed kulud uue testimata teostuse p\u00e4rast muretsemisest jne.\n<\/p>\n<h5>\n  Kinnitus arendusaeg<br \/>\n<\/h5>\n<p>\n  Standardse kujundusmustri j\u00e4rgimise eeliseks on ka lihtne suhtlemine tarkvaraarhitektide, mooduli juhtide, meeskonnajuhtide, arendajate jne puu\/hierarhia kaudu, teemal &#8220;Kuidas&#8221; on vaja midagi arendada, mitte ainult &#8220;Mida&#8221; arenenud.\n<\/p>\n<p>\n  M\u00f5nikord aitab see isegi testimismeeskondi, sest testijad teavad oma kogemusest, et teatud kujundusmustreid j\u00e4rgivat koodi saab t\u00f5en\u00e4oliselt teatud aja jooksul testimisriistade komplektiga kindlal viisil testida ja sellistel tuntud kujundustel ei pruugi olla mingeid vigu. v\u00f5i neil on &#8220;tuntud&#8221; puudused.\n<\/p>\n<h5>\n  Kas disainimustrite kasutamine ei anna isikup\u00e4ra?<br \/>\n<\/h5>\n<p>\n  Ei. Esiteks sellep\u00e4rast, et me ei \u00fctle, et j\u00e4rgite disainimustrit ja midagi muud ei juhtu. Enamik projektirakendusi jagab ainult p\u00f5hin\u00f5udeid teiste projektidega ja neil on t\u00f5en\u00e4oliselt k\u00f5rvalekaldeid. Nende k\u00f5rvalekallete loomine n\u00f5uab juurutamisel kasutatavate standardmustrite painutamist ja venitamist.\n<\/p>\n<p>\n  See on nagu pitsa valmistamine tavalisel viisil, seej\u00e4rel selle maitsestamine \/ erinevate n\u00f5uete esitamine, kas n\u00e4iteks t\u00e4ispirukapitsa v\u00f5i l\u00f5igatud pirukas v\u00f5i mis iganes.\n<\/p>\n<p>\n  Disainimustrite t\u00e4htsuse m\u00f5istmisel on \u00fcks asi <strong>v\u00e4gaoluline<\/strong> :\n<\/p>\n<p>\n  Disainimustrid ei ole tehnoloogia v\u00f5i raamistik, mida konkreetne ettev\u00f5te v\u00f5i programmeerimiskeel meile peale surub. See t\u00e4hendab, et see on nagu avatud kontseptsioon. Sa v\u00f5id seda vabalt v\u00f5tta, kasutada, muuta seda vastavalt oma vajadustele ja mis k\u00f5ige t\u00e4htsam&#8230; tunda seda enda omana.\n<\/p>\n<p>\n  K\u00f5ik standardsed v\u00f5i populaarsed disainimustrid on tegelikult \u00fcsna tugevalt pikendatavad.. need said populaarseks esiteks ainult seet\u00f5ttu, et paljud inimesed seda kasutavad.. ja paljud kasutavad seda ainult seet\u00f5ttu, et nad on oma n\u00f5udmistele paindlikud.\n<\/p>\n<p>\n  V\u00f5i kuidas arvate, kuidas standardne kujundusmuster sobiks projektiga New Jerseys ettev\u00f5tte jaoks ja ka Bangalore'is erineva ettev\u00f5tte ja erinevat t\u00fc\u00fcpi projekti jaoks.\n<\/p>\n<p>\n  See viib meid juurde &#8221; <strong>Enamik disainimustreid on \u00fcldised<\/strong> &#8220;&#8230; mis t\u00e4hendab, et neid ei kasutata alati sama t\u00fc\u00fcpi tarkvara koostamiseks. Te ei pruugi tavalistes aruteludes kuulda selliseid asju nagu \u201ePangatarkvara kujundamise muster&#8221; v\u00f5i \u201eSotsiaalv\u00f5rgustiku tarkvara kujundamise muster&#8221;, vaid ainult \u201eKujundusmustrid&#8221;.\n<\/p>\n<h3>\n  Kes peaks disainimustrite p\u00e4rast h\u00e4irima?<br \/>\n<\/h3>\n<ol>\n<li>Nii nagu hea hoonearhitekt arendab oma oskusi hoonete projekteerimisel, peaks tarkvaraarhitekt uurima oma elu jooksul paljude hoonete ja kujundite arhitektuuri ja disaini ning uurima ja visualiseerima, kuidas projekteeritakse erinevaid tarkvara\/tehnoloogia s\u00fcsteeme \u00fcle maailma v\u00f5i arhitektuur.\n  <\/li>\n<li>Ja nagu ka seda, kuidas hoone ehitust\u00f6\u00f6lised peaksid olema teadlikud erinevatest ehitusprojekti elluviimise viisidest kas oma kogemusest v\u00f5i hoone arhitektilt aru saades.\n  <\/li>\n<\/ol>\n<p>\n  Tarkvaraarendajad\/programmeerijad peaksid m\u00f5istma p\u00f5hilisi tarkvara kujundamise mustreid ja nende rakenduskoodi\u2026 kas ise v\u00f5i tarkvaraarhitektilt, kes juhendab meeskonda seda konkreetse mustri j\u00e4rgi v\u00e4lja t\u00f6\u00f6tama.\n<\/p>\n<h3>\n  P\u00f5hikoodimustrid<br \/>\n<\/h3>\n<p>\n  Selle artikli avareas \u00fctlesin, et iga programmeerija oleks kasutanud disainimustreid. Siin on m\u00f5ned v\u00e4ga lihtsad n\u00e4ited mustrit j\u00e4rgiva koodi kohta.\n<\/p>\n<ol>\n<li>\n<p>\n      J\u00e4rgmine on <strong>pealtkuulamisfiltri<\/strong> kujundusmuster.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Peida kopeeri kood\n    <\/p>\n<\/li>\n<li>\n<pre><code>switch (condition){\n     case Value1:\n     case Value2:\n     default:\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\n      S\u00fcndmuste k\u00e4ivitajad, s\u00fcndmuste k\u00e4itlejad&#8230; kuuluvad <strong>subjekti-vaatleja<\/strong> p\u00f5himustri alla. Arutame iga mustri standardeid, populaarseid variatsioone koos n\u00e4idetega &#8230; varsti.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Kui olete kasutanud m\u00f5nda t\u00fc\u00fcpi kogusid, n\u00e4iteks C#-s Arraylist, ja itereerinud massiivi kaudu, siis olete kasutanud Iteratori <strong>p\u00f5hikujundusmustrit<\/strong>.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Allolev kood on n\u00e4ide p\u00f5hilisest erandite k\u00e4sitlemise \/ <strong>vastutusahela<\/strong> mustrist.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Peida kopeeri kood\n    <\/p>\n<\/li>\n<li>\n<pre><code>try{\n}catch(Exception ex){\n}\nfinally{\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>\n  Disainimustrite erinevad valdkonnad<br \/>\n<\/h3>\n<p>\n  Tarkvaras on erinevaid terminoloogiaid peale disainimustrite. m\u00f5ned neist on sageli seotud disainimustritega, mida oleme seni arutanud. ja m\u00f5ned neist pole t\u00e4iesti seotud.\n<\/p>\n<p>\n  Seda, mida oleme siiani eespool arutanud, nimetatakse m\u00f5nikord &#8221; <strong>rakenduse disaini mustriteks<\/strong> &#8220;.\n<\/p>\n<p>\n  On ka teisi, nagu <strong>arhitektuurimustrid, raammustrid, keelemustrid<\/strong> (enamasti nimetatakse neid keelekonstruktsioonideks).\n<\/p>\n<p>\n  Need on erinevatel tasanditel laotud mustrid&#8230; nagu <strong>Keelemustrid<\/strong> on mustrid, mida rakendatakse osana programmeerimiskeeltest nagu C# \/ Java, kui keele funktsioonid\/konstruktsioonid.. m\u00f5nda neist oleme juba n\u00e4inud.\n<\/p>\n<p>\n  K\u00f5ik \u00fclaltoodud n\u00e4ited subjekti-vaatlejast, pealtkuulavast filtrist jne on keelekonstruktsioonidena k\u00f5igis populaarsetes k\u00f5rgetasemelistes programmeerimiskeeltes, mis ilmusid p\u00e4rast C.\n<\/p>\n<p>\n  <strong>Arhitektuurimustrid<\/strong> on need tarkvaraarhitektuuri standardmudelid, mis tavaliselt viitavad erinevatele moodulite v\u00f5i kihtide v\u00f5i tasandite paigutamise v\u00f5i \u00fchendamise meetoditele, mis moodustavad kogu rakenduse.\n<\/p>\n<p>\n  See ei ole kodeerimise\/programmeerimise m\u00f5ttes disainimustritega t\u00e4iesti seotud, kuid neil on samad vastused k\u00fcsimusele Miks \/ Mis on, nagu selles artiklis k\u00e4sitletud.\n<\/p>\n<p>\n  <strong>Raammustrid<\/strong> ei ole samuti seotud meie aruteluga disainimustrite \u00fcle. Kui raamistikud, nagu .NET, rakendavad spetsiaalseid vahendeid vigade logimiseks v\u00f5i koodi t\u00e4itmismarsruutide j\u00e4lgimiseks raamistiku sisseehitatud meetodite v\u00f5i objektide kaudu, nimetatakse selliseid mehhanisme raamistiku mustriteks.\n<\/p>\n<p>\n  M\u00f5ned .NET Frameworki n\u00e4ited h\u00f5lmavad funktsiooni stackTrace, klassi atribuudi funktsiooni [] nurksulgudega klassi\/meetodi definitsioonide kohal jne. Selliste funktsioonide kasutamisel kodeerime raamistiku sisseehitatud mustritega.\n<\/p>\n<p>\n  Loodan, et see artikkel aitab anda \u00fclevaate disainimustritest ja nendega seotud terminoloogiatest.\n<\/p>\n<p>\n  Siiani arutasime ainult seda, mis on standardid ja kui olulised need on.. aga me ei arutanud, millised on standardmustrid ise.\n<\/p>\n<h4>\n  Litsents<br \/>\n<\/h4>\n<p>\n  See artikkel koos k\u00f5igi seotud l\u00e4htekoodide ja failidega on litsentsitud koodiprojekti avatud litsentsi (CPOL) alusel.\n<\/p>\n<\/p>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\n  : <a target=\"_blank\" rel=\"noopener nofollow\" data-pssr=\"\" href=\"http:\/\/www.instantshift.com\/2016\/01\/12\/models-of-design-for-beginners\/\">instantshift.com<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Kui olete juba kirjutanud programmid suurte\/v\u00e4ikeste toodete v\u00f5i tarkvararakenduste jaoks, olete suure t\u00f5en\u00e4osusega kasutanud palju kujundusmustreid&#8230; kuigi on v\u00f5imalik, et need ei pruugi olla \u00fcks enimkasutatud \/ standardseid kujundusmustreid. Aga jah, disainimustri rakendamisel ja kujundusmustri \u201ckasutamisel\u201d on ilmselge erinevus&#8230; m\u00f5lemal juhul saab disainimustritega t\u00f6\u00f6tav inimene sellest aru v\u00f5i saab sellest kergesti aru. Asi on selles, et disainimustrid pole programmeerijatele uued. Selles allolevas artiklis p\u00fc\u00fcan selgitada disainimustreid, nende p\u00f5hit\u00f5desid ja &#8230;<\/p>\n","protected":false},"author":1,"featured_media":142080,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[221,143,195,52],"tags":[],"class_list":["post-247584","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-opikud","category-veebi-napunaited-ja-nipid","category-veebikujundus","category-web-ja-wordpress"],"_links":{"self":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/posts\/247584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/comments?post=247584"}],"version-history":[{"count":0,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/posts\/247584\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/media\/142080"}],"wp:attachment":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/media?parent=247584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/categories?post=247584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/tags?post=247584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}