Finns det en kanonisk bok om designmönster? [stängd]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Kommentarer

  • Jag ' är inte säker på om det här är vad du ' tänker på, men jag hittar många smarta utvecklingssaker på Forrst .
  • Vad sägs om en titel på " Referenskällor för designmönster

eller " Resurser för designmönster " (eftersom jag inte ' t betyder " referens " som bara " ser upp på efterfrågan ") och flytta alla listorna i kroppen (eller ta bort den)?

  • .NET Design Mönster och arkitektonisk vägledning
  • För några anständiga implementeringar tittade jag på dem på dofactory (inte ' men köp inte böckerna.
  • Med tanke på att denna fråga fick ett fullständigt och omfattande svar har jag ' stängt de andra designmönstren ifrågasätter som dubbletter av den här för att beteckna den som den kanoniska Q & A och svarpar för detta ämne.
  • Svar

    Designmönster: element av återanvändbar objektorienterad programvara kommer mycket nära min definition av en kanonisk bok om designmönster. Enligt dess wikipedia-artikel (betoning min):

    Det ursprungliga publiceringsdatumet för boken var 21 oktober 1994 med upphovsrätt från 1995 och från och med juli 2010 var boken i sin 38: e tryckningen . Boken gjordes först tillgänglig för allmänheten vid OOPSLA-möte som hölls i Portland, Oregon, i oktober 1994. Den har varit mycket inflytelserik inom området mjukvaruteknik och anses vara en viktig källa för objektorienterad designteori och praktik. Mer än 500 000 exemplar har sålts på engelska och på 13 andra språk .

    Ward Cunningham , en pionjär för designmönster, upprätthåller en onlinekatalog över bokens mönster WikiWikiWeb Och enligt Wikipedia-artikeln om designmönster (igen, betoning min):

    Designmönster fick popularitet inom datavetenskap efter att boken Design Patterns: Elements of Reusable Object-Oriented Software publicerades 1994 av den så kallade ”Gang of Four” (Gamma et al.).

    Det finns en hel del andra böcker som det hänvisas till i samma artikel som anmärkningsvärt i genren:

    Av dem jag har läst Fowlers bok är den mycket inflytelserik och en bra läsning. Vid vissa punkter är det lite vagt för min smak, men totalt sett är det en trevlig bok. Det finns en online-katalog över de mönster som ingår i boken, med minimala beskrivningar.

    Jag har också skummat igenom Head First Design Patterns, och om du har läst någon annan bok i Head First-serien är den av samma höga kvalitet och lika trevlig som de flesta böcker i serien :

    Head First är en serie introduktionsböcker till många ämnen, publicerade av O ”Reilly Media. Det betonar en oortodox, visuellt intensiv, läsare-involverande kombination av pussel, skämt, icke-standard design och layout, och en engagerande samtalsstil för att fördjupa läsaren i ett givet ämne.

    Uttrycket ”designmönster” är något vagt, eftersom varje allmän återanvändbar lösning kan betraktas som ett designmönster. Jag har alltid märkt en tendens att använda etiketten på de lösningar som beskrivs i en av de anmärkningsvärda böckerna jag har listat ovan, och mer specifikt Gang of Four och Fowler-böckerna. Designmönster följer inte en unik utvecklingsprocess, de är en normal mjukvarulösning s som råkar vara oerhört återanvändbara och de är extremt svåra att identifiera .

    Men om du jämför online-katalogerna för båda böckerna med innehållet i språkspecifika böcker kommer du att märka att de ofta används som mallar. Så jag skulle säga att båda böckerna är mycket nära att vara kanoniska referenser, med GoF-boken som är den viktigaste ur ett historiskt perspektiv, även om båda böckerna är begränsade till objektorienterad programmering .

    Kommentarer

    • +1. Egentligen ville jag ge dig +5 men tyvärr är ' inte tillåtet.
    • Hela Mönsterorienterad programvaruarkitekturserien handlar om mönster i olika typer av system – Volym 1 handlar om arkitektoniska mönster och mönster som korsar domäner, Volym 2 handlar om samtidiga system, Volym 3 handlar om resurshantering i nätverksanslutna / distribuerade system, Volym 4 handlar om distribuerade system och Volym 5 handlar också om mönsterspråk som referens för de övriga fyra volymerna. Med tanke på frågan tror jag att Volym 5 också kan vara tillämplig, men jag har inte ' t spenderat för mycket tid med det … ännu.
    • @Yannis den här och huvudet först är i allmänhet baserade på statiska typade språk. Finns det några bra böcker för dynamiska språk som python.
    • @ ravi404 norvig.com/design-patterns

    Svar

    The Book of Four book – Designmönster: element av återanvändbart objekt- Oriented Software är förmodligen det närmaste vi har en industristandard för designmönster.

    För en mer tillgänglig introduktion, Head First: Design Mönster är också bra. Låt dig inte skrämmas av det ”trendiga” omslaget, eftersom det är en bra läsning och förmodligen hjälper dig att förstå begreppen i GoF-boken mycket lättare om du läser det först.

    Svar

    mg src = ”https://i.stack.imgur.com/Fl7XR.gif” alt = ”Head First Design Patterns” title = ”Head First Design Patterns – bokbeskrivning vid O ' Reilly Media”>

    När som helst, någonstans i världen kämpar någon med samma problem med programvarudesignen som du har. Du vet att du inte vill uppfinna hjulet på nytt (eller värre, ett litet däck), så du tittar på Design Patterns – lärdomarna av dem som har mött samma problem. Med Design Patterns får du utnyttja andras bästa praxis och erfarenheter så att du kan spendera din tid på … något annat. Något mer utmanande. Något mer komplicerat. Något roligare.

    Du vill lära dig om de mönster som spelar roll – varför använda dem, när de ska användas, hur man använder dem (och när man INTE använder dem). Men du vill inte bara se hur mönster ser ut i en bok, du vill veta hur de ser ut ”i naturen”. I deras hemliga miljö. Med andra ord, i verkliga applikationer. Du vill också lära dig hur mönster används i Java API och hur du utnyttjar Java: s inbyggda mönsterstöd i din egen kod.

    Du vill lära dig de riktiga OO-designprinciperna och varför allt din chef berättade om arv kan ha fel (och vad ska man göra istället). Du vill lära dig hur dessa principer kommer att hjälpa dig nästa gång du ”går upp en bäck utan designmönster.

    Viktigast av allt, du vill lära dig det” hemliga språket ”i designmönster så att du kan hålla din egen med din kollega (och imponera på cocktailpartygäster) när han tillfälligt nämner sin fantastiskt smarta användning av Command, Facade, Proxy och Factory mellan sippor av en martini. Du kommer lätt att motverka med din djupa förståelse för varför Singleton är inte så enkelt som det låter, hur fabriken missförstås så ofta eller om det verkliga förhållandet mellan dekoratör, fasad och adapter.

    Med Head First Design Patterns undviker du generet av att tänka att Decorator är något från ”Trading Spaces” -show …

    Kommentarer

    • Detta. Det ' är mycket lättläst och förändrat sätt Jag närmar mig mjukvaruteknik helt.
    • Hela huvudserien är bra, speciellt för att starta utvecklare.
    • Jag älskar boken, men hatar absolut omslaget! En icke-programmerare kollega av min gick förbi mitt kontor häromdagen, såg boken och sa " Head First Designer Mönster? Går du i modebranschen? "
    • @Pete Varför omslaget kan ge dig fler problem. Hon lever tydligen ett dubbelt liv. fishbowl.pastiche. org / 2005/08/12 / …

    Svar

    Ja, det finns en välkänd bok om desig n mönster: Designmönster: Elements of Reusable Object-Oriented Software och författarna kallas ofta ”The Gang of Four” (GoF) och refereras i nästan alla texter om designmönster.

    Kommentarer

    • Även Martin Fowler ' s bok: amazon.com/Patterns-Enterprise-Application-Architecture-Martin/…
    • Detta är inte en bok om designmönster. Det ' är en katalog med mönster. Det finns ' en kort introduktion till designmönster i början, men jag tycker inte ' att introduktionen är tillräcklig.
    • @J ö rgWMittag Det ' s är inte ' en unik process för att skapa design mönster, designmönster är relativt små återanvändbara lösningar. Designmönster skapas genom de normala processerna för programvaruutveckling. Det som skiljer dem är deras enorma återanvändbarhet. Den enda relevanta unika processen är att identifiera en lösning som designmönster, och kataloger gör det fint.

    Svar

    Designmönster: element i återanvändbar objektorienterad programvara

    alt-text

    Från wikipedia :

    Designmönster: Elements of Reusable Object-Oriented Software är en programvaruteknik som beskriver återkommande lösningar på vanliga problem i programvara design. Bokens författare är Erich Gamma, Richard Helm, Ralph Johnson och John Vlissides med ett förord av Grady Booch. Författarna kallas ofta Gang of Four, GoF eller Go4. Boken är uppdelad i två delar, med de två första kapitlen som utforskar funktionerna och fallgroparna för objektorienterad programmering och de återstående kapitlen som beskriver 23 klassiska mönster för programvarudesign. Boken innehåller exempel i C ++ och Smalltalk.

    Svar

    En av de bästa designmönsterwebbplatserna är Wards Wiki, den allra första wiki. Se http://c2.com/cgi/wiki?HistoryOfPatterns för en bra startsida i den.

    1987 konsulterade Ward och Kent med Tektronix ”Semiconductor Test Systems Group” som hade problem med att avsluta en design. De bestämde sig för att testa de mönster som de studerade. Precis som Alexander som sa att ockupanterna i en byggnad borde utforma det, lät Ward och Kent representanter för användarna (en tränare och en fältingenjör) avsluta designen.

    Ward kom med ett ”språk” med fem mönster. som hjälpte nybörjare att utnyttja Smalltalks styrkor och undvika dess svagheter …

    Ward och Kent blev förvånade över den (visserligen spartanska) elegansen i gränssnittet som användarna designade. De rapporterade resultaten av detta experiment vid OOPSLA 87 i Orlando. De skrev upp en panelposition och presenterades vid Norm Kerths workshop om Var kommer föremål ifrån? De pratade mönster tills de var blåa i ansiktet och fick mycket överenskommelse, men utan mer konkreta mönster registrerade ingen sig.

    Under tiden var Erich Gamma upptagen med att skriva och reflektera över objektorienterad design i ET ++ som en del av sin doktorsavhandling. Erich hade insett att återkommande designstrukturer eller mönster var viktiga. Frågan var verkligen hur man fångar upp och kommunicerar dem.

    Bruce Anderson höll ett föredrag på TOOLS 90 där ErichGamma var närvarande; Erich gillade föredraget. Bruce gav en uppsats på EcoopOopsla90 (Ottawa) och drev en BOF med namnet Toward an Architecture Handbook där han, Erich Gamma, Richard Helm och andra diskuterade mönster.Det var första gången som Richard och Erich träffades, och de insåg att de delade gemensamma idéer om de viktigaste idéerna bakom att skriva återanvändbar OO-programvara.

    Strax före ECOOP ”91 Erich Gamma och Richard Helm, sittande på en på taket i Zürich på en svällande sommardag, sätt ihop den mycket ödmjuka början på katalogen över mönster som så småningom skulle bli DesignPatterns …

    Saker och ting började rulla på OOPSLA-verkstaden som Bruce drev 1991 Tillfälligt var Erich Gamma, Richard Helm, Ralph Johnson och John Vlissides alla där; de skulle senare bli Gang of Four som författade Design Patterns -boken …

    Svar

    Jag tror att Refactoring to Patterns kan vara användbart helt enkelt för att det beskriver hur viss design / kod kan omformas mot mönster i GoF-boken. Detta kan hjälpa till att övervinna den inledande inlärningskurvan. Åh och det funderar också på ”Mönster-lycka” 🙂

    Du kanske också tycker att de tre första volymerna av Mönsterorienterad programvaruarkitektur är en bra läsning.

    Svar

    Designmönster

    Denna handledning innehåller följande underavsnitt

    • Syfte med varje designmönster
    • Real World Structure for designmönstret
    • Ett problemuttalande
    • Detaljerad diskussion om problemet
    • Checklista för hur man kommer fram till ett mönster
    • tumregler när du kommer fram till mönstret.
    • Kodavsnitt för designmönstret som innehåller C #, C ++, Delphi, Java och PHP

    Denna webbplats innehåller också guide om Anti Patterns, UML och refactoring.

    Kommentarer

    • SourceMaking-webbplatsen ser enkel ut vid första anblicken, men den ' verkligen en bra referens. Bortsett från designmönstren är en del av utvecklingen, arkitekturen & antipatroner för projektledning lustiga. De ombyggda lösningarna kan faktiskt hjälpa dig att spara ett möte som ' går ur rälsen. (Inte dåligt för en designmönsterreferens)

    Svar

    Originalboken ”Design Patterns: Elements of Återanvändbar objektorienterad programvara ”är en bra resurs för objektorienterade designmönster.

    Det finns många andra böcker där ute. När jag behöver en snabbreferens och min GoF-bok är utom räckhåll har Wikipedia normalt tillräckligt med information om dessa och andra designmönster.

    Det är de primära jag använder. Det bör också noteras att människor har börjat tillämpa mönsterformatet på andra saker, till exempel projektledning.

    Om du vill veta om antipatroner, som du bör vara medveten om, finns det två böcker, ”AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis” samt ”Refactoring: Improving the Design of Existing Code” som har ett avsnitt om kodlukt, ett annat namn för antipatroner.

    Svar

    ”Agile Principles, Patterns, and Practices in C #” av Robert C. Martin. Jag tror att han också har en Java-version av boken.

    Inte ett mönster i sig, men Domain Driven Design har några fantastiska koncept även om du inte går för hela DDD-metoden.

     * Ubiquitous Language * Code first approach (vs. DB first) * etc. 

    Svar

    Om du är särskilt intresserad av designmönster i C ++, försök Modern C ++ Design av Andrei Alexandrescu.

    Denna bok talar om hur man implementerar gemensam y använde mönster som Factory, Singleton och Visitor i C ++. Det talar också om mycket C ++ – specifika ämnen som smarta pekare, mallmetaprogrammering och policybaserad klassdesign.

    Bokförfattare är en auktoritativ expert , känd för sitt

    banbrytande arbete med policybaserad design implementerad via metaprogrammering av mallar. Dessa idéer formuleras i hans bok Modern C ++ Design och implementerades först i hans programmeringsbibliotek, Loki. Han implementerade också konceptet ”move constructors” i sitt MOJO-bibliotek. Han bidrog till C / C ++ Users Journal under byline ”Generic < Programmering >” …

    Kommentarer

    • har du något emot att förklara mer om vad det gör och vad det ' är bra för? " Endast länk-svar " är inte riktigt välkomna på Stack Byt
    • @gnat: hur ' är det här?
    • din senaste redigering ser verkligen ut som en förbättring för mig.Även om läsare av svaret troligen skulle dra nytta av en mer detaljerad förklaring av vem är Aleksandresku
    • @gnat: eftersom du uppenbarligen vet vem han är, är du välkommen att redigera mitt svar.

    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *