{"id":257599,"date":"2023-06-08T11:14:00","date_gmt":"2023-06-08T08:14:00","guid":{"rendered":"https:\/\/inform.click\/designmodeller-for-nybegynnere\/"},"modified":"2023-06-08T11:34:00","modified_gmt":"2023-06-08T08:34:00","slug":"designmodeller-for-nybegynnere","status":"publish","type":"post","link":"https:\/\/inform.click\/no\/designmodeller-for-nybegynnere\/","title":{"rendered":"Designmodeller for nybegynnere"},"content":{"rendered":"<p>\n  Hvis du allerede har skrevet programmer for produkter eller programvareapplikasjoner, store\/sm\u00e5, er det mest sannsynlig at du har brukt mange designm\u00f8nstre&#8230; selv om det er mulig at de kanskje ikke er et av de mest brukte\/standard designm\u00f8nstrene.\n<\/p>\n<p>\n  Men ja, det er en \u00e5penbar forskjell mellom \u00e5 implementere et designm\u00f8nster og &laquo;bruke&raquo; et designm\u00f8nster&#8230; uansett, personen som jobber med designm\u00f8nstre forst\u00e5r det, eller vil forst\u00e5 det lett.\n<\/p>\n<p>\n  Poenget er at designm\u00f8nstre ikke er nye for programmerere.\n<\/p>\n<p>\n  I denne artikkelen nedenfor pr\u00f8ver jeg \u00e5 forklare designm\u00f8nstre i dets grunnleggende, og vi vil studere detaljer om forskjellige m\u00f8nstre, eksempler osv. i en annen artikkel.\n<\/p>\n<p>\n  Hva er et designm\u00f8nster?\n<\/p>\n<p>\n  <strong>\u00c5 begynne\u2026<\/strong>\n<\/p>\n<p>\n  Jeg tror den beste m\u00e5ten \u00e5 begynne med \u00e5 forst\u00e5 designm\u00f8nstre er ved \u00e5 forst\u00e5 ikke-tekniske m\u00f8nstre som vi bevisst \/ ubevisst f\u00f8lger i hverdagen v\u00e5r.\n<\/p>\n<p>\n  La oss for eksempel ta mange CV-er som er sendt inn for en ledig stilling. Alles CV ser ikke like ut &#8230; selv om de alle pleier \u00e5 gj\u00f8re det samme, det er \u00e5 fortelle en leser hva de er dyktige p\u00e5, eller hvordan han\/hun kan passe for jobben.\n<\/p>\n<p>\n  Flertallet av dem som sender inn CV til jobber, vet at de m\u00e5 sende inn en CV med et bestemt sett med informasjon i et formatert Word-dokument.\n<\/p>\n<p>\n  Dette &#8230; er et m\u00f8nster, at alle sender inn et CV med et bestemt sett med informasjon uttrykt i den.\n<\/p>\n<p>\n  Hvis du har lyst&#8230; kall det maler i stedet for m\u00f8nstre. Designmaler.\n<\/p>\n<p>\n  Det er mange slike ting i det virkelige liv som er m\u00f8nstre. Noen liker eksemplene nedenfor:\n<\/p>\n<p>\n  Alle kokker over hele verden lager pizza eller pommes frites p\u00e5 samme m\u00e5te. Selv om de kan toppe det \/ smaksette det annerledes. Det er et m\u00f8nster.\n<\/p>\n<p>\n  Hver bils design f\u00f8lger et grunnleggende designm\u00f8nster, fire hjul, ratt, kjernedrivsystemet som gasspedal-break-clutch, etc.\n<\/p>\n<p>\n  Alle ting som bygges\/produseres gjentatte ganger, skal uunng\u00e5elig f\u00f8lge et m\u00f8nster i designet&#8230; det v\u00e6re seg biler, pizza, minibanker, hva som helst&#8230; til og med tannb\u00f8rste.\n<\/p>\n<p>\n  Design som nesten har blitt en standard m\u00e5te \u00e5 kode logikk\/mekanismer\/teknikker i programvare, blir derfor kjent som \u2013 og dermed \u2013 studert som Software Design Patterns.\n<\/p>\n<h3>\n  Hvorfor er et designm\u00f8nster viktig?<br \/>\n<\/h3>\n<p>\n  I utgangspunktet av to grunner:\n<\/p>\n<ol>\n<li>\n    <strong>For \u00e5 holde seg til en standard<\/strong>\n  <\/li>\n<li>\n    <strong>For \u00e5 f\u00e5 fart p\u00e5 utviklingen<\/strong>\n  <\/li>\n<\/ol>\n<p>\n  Jeg vil forklare i detalj.\n<\/p>\n<p>\n  For det f\u00f8rste ser vi hvorfor det er interessant \u00e5 holde seg til et standardm\u00f8nster.\n<\/p>\n<p>\n  La oss ta listen over CV-eksempler vi diskuterte f\u00f8r.\n<\/p>\n<p>\n  Det kan v\u00e6re en eller to s\u00f8kere som sender jobbs\u00f8knadene sine p\u00e5 e-post uten riktig formatering, uten vedlegg til e-posten, osv., .. disse en eller to s\u00f8kerne f\u00f8lger ikke m\u00f8nsteret.. og vil sannsynligvis IKKE ende opp med jobben&#8230;. Hvorfor? Fordi de avviker fra et veletablert m\u00f8nster, som kanskje ikke er likt av de som s\u00f8ker CV-er for jobben.\n<\/p>\n<h5>\n  Er det ikke noen som avviker fra m\u00f8nsteret og blir \u00abkule\u00bb? Er ikke det innovasjon?<br \/>\n<\/h5>\n<p>\n  Ja, det er tider at en veldig annerledes presentert CV f\u00e5r jobben for \u00e5 v\u00e6re annerledes enn de andre. Vanligvis har jeg h\u00f8rt om webdesignere som fikk toppjobber fordi de kompilerte og presenterte en CD-film av arbeidet sitt, eller laget en animasjonsfigur som forklarer arbeidet deres, hadde lagt det ut p\u00e5 bloggen deres og slike ting.\n<\/p>\n<p>\n  Men.. dette er eksperimentering (innovasjon kommer fra vellykkede eksperimenter).\n<\/p>\n<p>\n  Oftest i programvareutvikling har du ikke r\u00e5d til \u00e5 eksperimentere, p\u00e5 grunn av tidslinjepress, forventninger osv., men ja noen ganger, noen interessante prosjekter tillater litt eksperimentering.\n<\/p>\n<p>\n  I programvare kan vi ikke gj\u00f8re grunnleggende ting som et bankinnskudd&#8230; p\u00e5 101 m\u00e5ter&#8230; det vil bare v\u00e6re noen f\u00e5 m\u00e5ter \u00e5 behandle et bankinnskudd p\u00e5&#8230; s\u00e5 det er fornuftig \u00e5 f\u00f8lge et etablert og testet m\u00f8nster.\n<\/p>\n<p>\n  Dessuten har de fleste designm\u00f8nstre variasjoner &#8230; noen av variantene er s\u00e5 popul\u00e6re at variantene ogs\u00e5 vil v\u00e6re en ny standardtype av m\u00f8nsteret.\n<\/p>\n<p>\n  Programvareprosjekter i disse dager forventes (i det minste implisitt) \u00e5 f\u00f8lge en allerede etablert design av et lignende produkt\/programvare p\u00e5 markedet.\n<\/p>\n<p>\n  Det er her det \u00e5 holde seg til en standard stil med koding eller designm\u00f8nster hjelper programvareutvikling &#8230; \u00e5 feste utviklingen, fjerne overheaden med \u00e5 bekymre seg for en ny utestet implementering, etc.,\n<\/p>\n<h5>\n  Feste utviklingstid<br \/>\n<\/h5>\n<p>\n  \u00c5 f\u00f8lge et standard designm\u00f8nster har ogs\u00e5 fordelen av \u00e5 kommunisere enkelt gjennom treet \/ hierarkiet av programvarearkitekter, modulleads, team leads, Developers etc., om &laquo;Hvordan&raquo; noe m\u00e5 utvikles, og ikke bare &laquo;Hva&raquo; m\u00e5 v\u00e6re utviklet.\n<\/p>\n<p>\n  Noen ganger hjelper det til og med Testing Teams, fordi testere ville vite av erfaring at kode som f\u00f8lger et bestemt designm\u00f8nster sannsynligvis kan testes p\u00e5 en bestemt m\u00e5te med et sett med testverkt\u00f8y i en viss tidsperiode, og slike kjente design har kanskje ikke noen feil eller har noen &laquo;kjente&raquo; feil.\n<\/p>\n<h5>\n  F\u00e5r ikke bruk av Design Patterns et personlig preg?<br \/>\n<\/h5>\n<p>\n  Nei. For det f\u00f8rste fordi vi ikke sier at du f\u00f8lger et designm\u00f8nster og at ingenting annet skjer. De fleste prosjektimplementeringer deler bare grunnleggende krav med andre prosjekter, og vil mest sannsynlig ha avvik. \u00c5 bygge disse avvikene vil kreve \u00e5 b\u00f8ye og strekke standardm\u00f8nstrene som brukes i en implementering.\n<\/p>\n<p>\n  Det er som \u00e5 lage pizzaen p\u00e5 standardm\u00e5ten, for s\u00e5 \u00e5 smaksette den \/ presentere den til forskjellige krav, enten som en helpai-pizza, eller en oppsk\u00e5ret pai, eller hva som helst.\n<\/p>\n<p>\n  N\u00e5r det gjelder \u00e5 forst\u00e5 viktigheten av designm\u00f8nstre, er \u00e9n ting <strong>veldigviktig<\/strong> :\n<\/p>\n<p>\n  Designm\u00f8nstre er ikke noen teknologi eller rammeverk som et bestemt selskap eller programmeringsspr\u00e5k tvinger p\u00e5 oss. Det betyr at det er som et \u00e5pent konsept&#8230; du st\u00e5r fritt til \u00e5 ta det, bruke det, modifisere det til dine behov, og viktigst av alt&#8230; f\u00f8le det ditt eget.\n<\/p>\n<p>\n  Alle standard eller popul\u00e6re designm\u00f8nstre kan faktisk utvides ganske tungt.. de ble popul\u00e6re, for det f\u00f8rste, bare fordi mange bruker det.. og mange bruker det bare fordi de er fleksible etter deres krav.\n<\/p>\n<p>\n  Eller hvordan tror du et standard designm\u00f8nster vil passe til et prosjekt i New Jersey for et selskap og ogs\u00e5 i Bangalore for et annet selskap og en annen type prosjekt.\n<\/p>\n<p>\n  Det bringer oss til &raquo; <strong>De fleste designm\u00f8nstre er generiske<\/strong> &raquo; &#8230; betyr at de ikke alltid brukes til \u00e5 bygge samme type programvare. Du h\u00f8rer kanskje ikke ting som &laquo;designm\u00f8nster for bankprogramvare&raquo; eller &laquo;designm\u00f8nster for sosiale nettverksprogramvare&raquo; brukt i vanlige diskusjoner &#8230; men bare &laquo;designm\u00f8nstre&raquo;.\n<\/p>\n<h3>\n  Hvem b\u00f8r bry seg om designm\u00f8nstre?<br \/>\n<\/h3>\n<ol>\n<li>Akkurat som hvordan en god bygningsarkitekt \u00f8ker ferdighetene sine med \u00e5 designe bygninger, ved \u00e5 studere arkitekturen og designen til en rekke bygninger og former gjennom livet, b\u00f8r en programvarearkitekt studere og visualisere hvordan forskjellige programvare-\/teknologisystemer over hele kloden er designet eller arkitekttisert.\n  <\/li>\n<li>Og akkurat som hvordan bygningsarbeiderne i et bygg b\u00f8r v\u00e6re oppmerksomme p\u00e5 ulike m\u00e5ter \u00e5 implementere en bygningsdesign p\u00e5, enten fra egen erfaring eller ved \u00e5 forst\u00e5 det fra Byggets Arkitekt.\n  <\/li>\n<\/ol>\n<p>\n  Programvareutviklere\/programmerere b\u00f8r forst\u00e5 grunnleggende programvaredesignm\u00f8nstre og implementeringskoden deres&#8230; enten selv eller fra programvarearkitekten som instruerer teamet til \u00e5 utvikle det etter et bestemt m\u00f8nster.\n<\/p>\n<h3>\n  Grunnleggende kodem\u00f8nstre<br \/>\n<\/h3>\n<p>\n  I de innledende linjene i denne artikkelen sa jeg at enhver programmerer ville ha brukt designm\u00f8nstre. Her er noen veldig grunnleggende eksempler p\u00e5 kode som f\u00f8lger et m\u00f8nster.\n<\/p>\n<ol>\n<li>\n<p>\n      F\u00f8lgende er et grunnleggende designm\u00f8nster <strong>for intercepting filter .<\/strong>\n    <\/p>\n<\/li>\n<li>\n<p>\n      Skjul kopier kode\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      Hendelsesutl\u00f8sere, hendelsesbehandlere.. kommer under grunnleggende <strong>Emne-Observer<\/strong> designm\u00f8nster. Vi vil diskutere hver m\u00f8nsterstandard, popul\u00e6re varianter, med eksempler&#8230; snart.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Hvis du har brukt en slags samlinger, som Arraylist i C#, og itererer gjennom arrayet, har du brukt et grunnleggende <strong>Iterator<\/strong> -designm\u00f8nster.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Koden nedenfor er et eksempel p\u00e5 et grunnleggende unntaksh\u00e5ndtering\/ <strong>ansvarskjedem\u00f8nster<\/strong>.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Skjul kopier kode\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  Ulike omr\u00e5der av designm\u00f8nstre<br \/>\n<\/h3>\n<p>\n  Det er andre terminologier i programvare enn Design Patterns.. noen av dem er ofte relatert til designm\u00f8nstre som vi har diskutert s\u00e5 langt.. og noen av dem er helt uten slekt.\n<\/p>\n<p>\n  Det vi s\u00e5 langt har diskutert ovenfor kalles noen ganger &raquo; <strong>Implementation Design Patterns<\/strong> &laquo;.\n<\/p>\n<p>\n  Det er andre, som <strong>arkitekturm\u00f8nstre, rammem\u00f8nstre, spr\u00e5km\u00f8nstre<\/strong> (for det meste kalt spr\u00e5kkonstruksjoner).\n<\/p>\n<p>\n  De er m\u00f8nstre lagt p\u00e5 forskjellige niv\u00e5er &#8230; som <strong>Spr\u00e5km\u00f8nstre<\/strong> er m\u00f8nstre implementert som en del av programmeringsspr\u00e5k som C# \/ Java, som spr\u00e5kets funksjoner \/ konstruksjoner. Noen av dem har vi allerede sett.\n<\/p>\n<p>\n  Alle eksemplene ovenfor p\u00e5 subjektobservat\u00f8r, avskj\u00e6rende filter, etc., er absorbert som spr\u00e5kkonstruksjoner i alle popul\u00e6re programmeringsspr\u00e5k p\u00e5 h\u00f8yt niv\u00e5 som kom etter C.\n<\/p>\n<p>\n  <strong>Arkitekturm\u00f8nstre<\/strong> er de standardmodellene for programvarearkitektur, som vanligvis refererer til forskjellige metoder for \u00e5 plassere eller koble moduler eller lag eller lag, som utgj\u00f8r hele applikasjonen.\n<\/p>\n<p>\n  Dette er helt urelatert til designm\u00f8nstre i betydningen koding\/programmering som &#8230; men de deler de samme svarene p\u00e5 hvorfor \/ hva er som diskutert i denne artikkelen.\n<\/p>\n<p>\n  <strong>Rammem\u00f8nstre<\/strong> er heller ikke relatert til v\u00e5r diskusjon om designm\u00f8nstre. N\u00e5r rammeverk som .NET implementerer spesielle midler for logging av feil eller sporing av kodekj\u00f8ringsruter enkelt gjennom rammeverkets innebygde metoder eller objekter, refereres slike mekanismer til som rammem\u00f8nstre.\n<\/p>\n<p>\n  Noen eksempler i .NET Framework inkluderer stackTrace-funksjonen, klasseattributt-funksjonen med [] firkantede klammeparenteser p\u00e5 toppen av klasse-\/metodedefinisjoner osv. N\u00e5r vi bruker slike funksjoner, koder vi med Frameworks innebygde m\u00f8nstre.\n<\/p>\n<p>\n  Jeg h\u00e5per denne artikkelen bidrar til \u00e5 gi en oversikt over designm\u00f8nstre og relaterte terminologier.\n<\/p>\n<p>\n  S\u00e5 langt har vi bare diskutert hva standardene er og hvor viktige de er.. men vi diskuterte ikke hva selve standardm\u00f8nstrene er.\n<\/p>\n<h4>\n  Tillatelse<br \/>\n<\/h4>\n<p>\n  Denne artikkelen, sammen med all tilknyttet kildekode og filer, er lisensiert under The Code Project Open License (CPOL).\n<\/p>\n<\/p>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\n  Opptakskilde: <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>Hvis du allerede har skrevet programmer for produkter eller programvareapplikasjoner, store\/sm\u00e5, er det mest sannsynlig at du har brukt mange designm\u00f8nstre&#8230; selv om det er mulig at de kanskje ikke er et av de mest brukte\/standard designm\u00f8nstrene. Men ja, det er en \u00e5penbar forskjell mellom \u00e5 implementere et designm\u00f8nster og &laquo;bruke&raquo; et designm\u00f8nster&#8230; uansett, personen som jobber med designm\u00f8nstre forst\u00e5r det, eller vil forst\u00e5 det lett. Poenget er at designm\u00f8nstre ikke er nye for programmerere. I denne artikkelen nedenfor pr\u00f8ver jeg \u00e5 forklare designm\u00f8nstre, i dets grunnleggende, og &#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":[226,148,57,200],"tags":[],"class_list":["post-257599","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laereboker","category-nett-tips-og-triks","category-web-og-wordpress","category-webdesign-2"],"_links":{"self":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/posts\/257599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/comments?post=257599"}],"version-history":[{"count":0,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/posts\/257599\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/media\/142080"}],"wp:attachment":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/media?parent=257599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/categories?post=257599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/tags?post=257599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}