Kommentarer
- Jeg ' er ikke sikker på, om dette er hvad du ' tænker over, men jeg finder masser af kloge udviklings ting på Forrst .
- Hvad med en titel på " Referencekilder til designmønstre
eller " Designmønsterressourcer " (da jeg ikke ' t betyder " reference " som bare " ser op på efterspørgsel ") og flytte alle listen ting ind i kroppen (eller fjerne den)?
Svar
Designmønstre: Elementer af genanvendelig objektorienteret software kommer meget tæt på min definition af en kanonisk bog om designmønstre. Ifølge dets wikipedia-artikel (min vægt):
Den oprindelige udgivelsesdato for bogen var 21. oktober 1994 med ophavsret fra 1995, og fra juli 2010 var bogen i sin 38. udskrivning . Bogen blev først gjort tilgængelig for offentligheden på OOPSLA-mødet i Portland, Oregon, i oktober 1994. Den har haft stor indflydelse på området software engineering og betragtes som en vigtig kilde til objektorienteret designteori og praksis. Mere end 500.000 eksemplarer er solgt på engelsk og på 13 andre sprog .
Ward Cunningham , en pioner med designmønstre, vedligeholder et online katalog over bogens mønstre på WikiWikiWeb Og ifølge Wikipedia-artiklen om designmønster (igen, min vægt):
Designmønstre fik popularitet inden for datalogi efter bogen Design Patterns: Elements of Reusable Object-Oriented Software blev offentliggjort i 1994 af den såkaldte “Gang of Four” (Gamma et al.).
Der er en hel del andre bøger, der er henvist til i samme artikel som bemærkelsesværdig i genren:
- Mønsterorienteret softwarearkitektur bind 1: Et system af mønstre , af Douglas Schmidt, Michael Stal, Hans Rohnert og Frank Buschmann,
- Mønstre fra Enterprise Application Architecture af Martin Fowler,
- Enterprise Integration Patterns: Designing, Building and Deploying Messaging Solutions ., Af Hohpe, Gregor og Bobby Woolf og
- Head First Design Patterns , af Eric T. Freeman, Elisabeth Robson, Bert Bates og Kathy Sierra.
Af dem, jeg har læst Fowlers bog, er den meget indflydelsesrig og en god læsning. På visse punkter er det lidt vagt for min smag, men generelt er det en fornøjelig bog. Der er et online katalog over de mønstre, der er inkluderet i bogen, med minimale beskrivelser.
Jeg har også skummet gennem Head First Design Patterns, og hvis du har læst en anden bog i Head First-serien, er den af samme høje kvalitet og så behagelig som de fleste bøger i serien :
Head First er en række indledende instruktionsbøger til mange emner, udgivet af O “Reilly Media. Det understreger en uortodoks, visuelt intensiv, læserinddragende kombination af gåder, vittigheder, ikke-standard design og layout og en engagerende samtalestil for at fordybe læseren i et givet emne.
Udtrykket “designmønster” er noget vagt, da enhver generel genanvendelig løsning kan betragtes som et designmønster. Jeg har altid bemærket en tendens til at anvende etiketten på de løsninger, der er beskrevet i en af de bemærkelsesværdige bøger, jeg har nævnt ovenfor, og mere specifikt Gang of Four og Fowler-bøgerne. Designmønstre følger ikke en unik udviklingsproces, de er normal softwareløsning s, der tilfældigvis er uendeligt genanvendelige, og de er ekstremt svære at identificere .
Men hvis du sammenligner onlinekatalogerne for begge bøger med indholdet af sprogspecifikke bøger, vil du bemærke, at de ofte bruges som skabeloner. Så jeg vil sige, at begge bøger er meget tæt på at være kanoniske referencer, hvor GoF-bogen er den vigtigste fra et historisk perspektiv, selvom begge bøger er begrænset til objektorienteret programmering .
Kommentarer
- +1. Faktisk ville jeg give dig +5, men desværre er ' ikke tilladt.
- Hele mønsterorienteret software-arkitekturserien handler om mønstre i forskellige typer systemer – bind 1 handler om arkitektoniske mønstre og mønstre, der krydser domæner, bind 2 handler om samtidige systemer, bind 3 handler om ressourcehåndtering i netværk / distribuerede systemer, bind 4 handler om distribuerede systemer, og bind 5 handler også om mønstersprog som reference for de øvrige 4 bind. I betragtning af spørgsmålet tror jeg, at bind 5 muligvis også kan anvendes, men jeg har ikke ' t brugt for meget tid på det … endnu.
- @Yannis denne og hovedet først er generelt baseret på statiske typede sprog. Findes der gode bøger til dynamiske sprog som python.
- @ ravi404 norvig.com/design-patterns
Svar
The Book of Four-bogen – Designmønstre: Elementer af genanvendeligt objekt- Orienteret software er sandsynligvis det tætteste, vi har en industristandard for designmønstre.
For en mere tilgængelig introduktion, Head First: Design Mønstre er også godt. Lad dig ikke blive afskrækket af det “trendy” omslag, da det er en god læsning og sandsynligvis hjælper dig med at forstå begreberne i GoF-bogen meget lettere, hvis du læser den først.
Svar
På et hvilket som helst tidspunkt, nogen steder i verden, kæmper nogen med de samme softwaredesignproblemer som du har. Du ved, at du ikke vil genopfinde hjulet (eller værre, et fladt dæk), så du ser på Designmønstre – de erfaringer, som dem, der har haft de samme problemer, har lært. Med designmønstre får du fordel af andres bedste praksis og oplevelse, så du kan bruge din tid på … noget andet. Noget mere udfordrende. Noget mere komplekst. Noget mere sjovt.
Du vil lære om de mønstre, der betyder noget – hvorfor bruge dem, hvornår de skal bruges, hvordan man bruger dem (og hvornår IKKE skal bruge dem). Men du vil ikke bare se, hvordan mønstre ser ud i en bog, du vil vide, hvordan de ser ud “i naturen”. I deres oprindelige miljø. Med andre ord, i applikationer i den virkelige verden. Du vil også lære, hvordan mønstre bruges i Java API, og hvordan man udnytter Javas indbyggede mønsterunderstøttelse i din egen kode.
Du vil lære de ægte OO-designprincipper og hvorfor alt, hvad din chef fortalte dig om arv, måske være forkert (og hvad man skal gøre i stedet). Du vil lære, hvordan disse principper vil hjælpe næste gang du “går op ad en bæk uden et designmønster.
Vigtigst er det, du vil lære det” hemmelige sprog “i designmønstre, så du kan holde din egen med din kollega (og imponere cocktailpartygæster), når han tilfældigt nævner sin forbløffende kloge brug af Command, Facade, Proxy og Factory imellem sips af en martini. Du vil let imødegå med din dybe forståelse af, hvorfor Singleton er ikke så simpelt som det lyder, hvordan fabrikken så ofte misforstås eller om det virkelige forhold mellem dekoratør, facade og adapter.
Med Head First Design Patterns undgår du forlegenheden ved at tænke Decorator er noget fra showet “Trading Spaces” …
Kommentarer
- Dette. Det ' er en meget tilgængelig læsning og ændrede måde Jeg nærmer mig softwareteknik fuldstændigt.
- hele hovedets første serie er fantastisk, især til start af devs.
- Jeg elsker bogen, men hader absolut omslaget! En ikke-programmerer kollega af min gik forbi mit kontor forleden dag, så bogen og sagde " Head First Designer Mønstre? Går du i modebranchen? "
- @Pete Hvorfor coveret kan få dig i flere problemer. Hun lever tilsyneladende et dobbelt liv. fishbowl.pastiche. org / 2005/08/12 / …
Svar
Ja, der er en velkendt bog om design n mønstre: Designmønstre: Elementer af genanvendelig objektorienteret software og forfatterne kaldes ofte “Gang of Four” (GoF) og henvises til i næsten alle tekster om designmønstre.
Kommentarer
- Også Martin Fowler ' s bog: amazon.com/Patterns-Enterprise-Application-Architecture-Martin/…
- Dette er ikke en bog om designmønstre. Det ' er et katalog med mønstre. Der ' er en kort introduktion til designmønstre i starten, men jeg synes ikke ' at introduktionen er tilstrækkelig.
- @J ö rgWMittag Der ' s er ikke ' en unik proces til at skabe design mønstre, designmønstre er relativt små genanvendelige løsninger. Designmønstre skabes gennem de normale processer inden for softwareudvikling, hvad der adskiller dem er deres enorme genanvendelighed. Den eneste relevante unikke proces er at identificere en løsning som et designmønster, og kataloger gør det fint.
Svar
Designmønstre: elementer i genanvendelig objektorienteret software
Fra wikipedia :
Designmønstre: Elementer af genanvendelig objektorienteret software er en softwareingeniørbog, der beskriver tilbagevendende løsninger på almindelige problemer i software design. Bogens forfattere er Erich Gamma, Richard Helm, Ralph Johnson og John Vlissides med et forord af Grady Booch. Forfatterne omtales ofte som Gang of Four, GoF eller Go4. Bogen er opdelt i to dele med de to første kapitler, der udforsker funktionerne og faldgruberne ved objektorienteret programmering, og de resterende kapitler, der beskriver 23 klassiske softwaredesignmønstre. Bogen indeholder eksempler i C ++ og Smalltalk.
Svar
Et af de bedste designmønsterwebsider er Wards Wiki, den allerførste wiki. Se http://c2.com/cgi/wiki?HistoryOfPatterns for en god startside i den.
I 1987 rådførte Ward og Kent sig med Tektronix s Semiconductor Test Systems Group, der havde problemer med at færdiggøre et design. De besluttede at prøve de mønstre, de havde studeret. Ligesom Alexander, der sagde, at beboerne i en bygning skulle designe det, lod Ward og Kent repræsentanter for brugerne (en træner og en feltingeniør) afslutte designet.
Ward kom med et “sprog” med fem mønstre. der hjalp de nybegyndende designere med at udnytte Smalltalks styrker og undgå dens svagheder …
Ward og Kent var forbløffede over den (ganske vist spartanske) elegance af den grænseflade, deres brugere designede. De rapporterede resultaterne af dette eksperiment på OOPSLA 87 i Orlando. De skrev en panelposition og præsenterede på Norm Kerths workshop om Hvor kommer objekter fra? De talte mønstre, indtil de var blå i ansigtet og fik meget enighed, men uden mere konkrete mønstre tilmeldte ingen sig.
I mellemtiden var Erich Gamma travlt med at skrive og reflektere over objektorienteret design i ET ++ som en del af sin ph.d.-afhandling. Erich havde indset, at tilbagevendende designstrukturer eller mønstre var vigtige. Spørgsmålet var virkelig, hvordan man fanger og kommunikerer dem.
Bruce Anderson holdt en tale på TOOLS 90, hvor ErichGamma var til stede; Erich kunne lide samtalen. Bruce gav et papir på EcoopOopsla90 (Ottawa) og kørte en BOF kaldet Toward an Architecture Handbook hvor han, Erich Gamma, Richard Helm og andre kom ind i diskussioner om mønstre.Det var første gang, at Richard og Erich mødtes, og de indså, at de delte fælles ideer om nøgleidéerne bag at skrive genanvendelig OO-software.
Lige før ECOOP “91 Erich Gamma og Richard Helm, der sad på en tagterrasse i Zürich på en svirrende sommerdag, sammensæt den meget ydmyge begyndelse af kataloget over mønstre, der til sidst ville blive DesignPatterns …
Ting kom virkelig i gang i OOPSLA-værkstedet, som Bruce kørte i 1991 Tilfældigt nok var Erich Gamma, Richard Helm, Ralph Johnson og John Vlissides der alle sammen; de blev senere den bande af fire der var forfatter til Design Patterns -bogen …
Svar
Jeg tror, at Refactoring til mønstre kan være nyttigt, simpelthen fordi det beskriver, hvordan bestemt desing / kode kan omformuleres mod mønstre i GoF-bogen. Dette kan hjælpe med at overvinde den indledende indlæringskurve. Åh, og det overvejer også “Mønster-lykke” 🙂
Du kan også finde de første tre bind af mønsterorienteret softwarearkitektur som en god læsning.
Svar
Denne tutorialsite indeholder følgende underafsnit
- Hensigten med hvert designmønster
- Real World Structure for designmønsteret
- En problemstilling
- Detaljeret diskussion om problemet
- Tjekliste om, hvordan man når frem til et mønster
- tommelfingerregler mens du ankommer til mønster.
- Kodestykker til designmønsteret, der inkluderer C #, C ++, Delphi, Java og PHP
Dette websted indeholder også vejledning om anti-mønstre, UML og refactoring.
Kommentarer
- SourceMaking-webstedet ser simpelt ud ved første øjekast, men det ' s virkelig en god reference. Bortset fra designmønstrene er nogle af udviklingen, arkitekturen & projektledelsesmønstre sjove. De ombyggede løsninger kan faktisk hjælpe dig med at gemme et møde, der ' går ud af skinnerne. (Ikke dårligt for en designmønsterreference)
Svar
Den originale bog, “Design Patterns: Elements of Genanvendelig objektorienteret software “er en god ressource til objektorienterede designmønstre.
Der findes mange andre bøger derude. Når jeg har brug for en hurtig reference, og min GoF-bog er uden for rækkevidde, har Wikipedia normalt nok information om disse og andre designmønstre.
Det er de primære, jeg bruger. Det skal også bemærkes, at folk er begyndt at anvende mønsterformatet på andre ting, såsom projektledelse.
Hvis du vil vide mere om antipatroner, som du bør være opmærksom på, er der to bøger, “AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis” samt “Refactoring: Improving Design of Existing Code”, som har et afsnit om kodelugt, et andet navn til antipatterns.
Svar
“Agile Principles, Patterns, and Practices in C #” af Robert C. Martin. Jeg tror, han også har en Java-version af bogen.
Også ikke et mønster i sig selv, men Domain Driven Design har nogle gode koncepter, selvom du ikke går efter den fulde DDD-tilgang.
* Ubiquitous Language * Code first approach (vs. DB first) * etc.
Svar
Hvis du specifikt er interesseret i designmønstre i C ++, så prøv Modern C ++ Design af Andrei Alexandrescu.
Denne bog taler om, hvordan man implementerer commonl y brugte mønstre som Factory, Singleton og Visitor i C ++. Det taler også om meget C ++ – specifikke emner såsom smarte pointer, skabelonmetaprogrammering og politikbaseret klassedesign.
Bogforfatter er en autoritativ ekspert , kendt for sit
banebrydende arbejde med politikbaseret design implementeret via metaprogrammering af skabeloner. Disse ideer er formuleret i hans bog Modern C ++ Design og blev først implementeret i hans programmeringsbibliotek, Loki. Han implementerede også konceptet “move constructors” i sit MOJO-bibliotek. Han bidrog til C / C ++ Brugere Journalen under linjen “Generisk < Programmering >” …
Kommentarer
- har du noget imod at forklare mere om, hvad det gør, og hvad det ' er godt for? " Kun link-svar " er ikke helt velkomne på Stack Udveksling
- @gnat: hvordan ' er dette?
- din seneste redigering ser bestemt ud til en forbedring for mig.Skønt læsere af svaret sandsynligvis ville drage fordel af en mere detaljeret forklaring på hvem er Aleksandresku
- @gnat: da du selvfølgelig ved, hvem han er, er du velkommen til at redigere mit svar.