Groovy Design Patterns July 21, 2009 05:49 over 2 years ago
Det er med stor tilfredshed jeg sætter mig til rette på GR8Conf konferencen i København for at høre om nye design patterns i programmeringssproget Groovy. For nogle år tilbage var jeg med til at udforme Design Pattern Language, en grafisk repræsentation af de grundlæggende egenskaber ved de forskellige design pattern. Med dette visuelle sprog kan man med en forretningskyndig vælge et design pattern som understøtter fx hastighed, enkelthed eller skalerbarhed. Med dette i tanke er min interesse for disse generelle løsninger enorm.
I Groovy er de bagvedliggende tanker og motivation for design pattern meget forskellige fra mange andre programmeringssprog. Dierk Koenig, forfatter til “Groovy In Action” præsenter om etablerede og nye design patterns på vej ind i Groovy sfæren. Dierk forsøger også at svare på det spørgsmål som mange virksomheder stiller i forbindelse med at inkorporer ny teknoligi/sprog som groovy. Hvordan introducere man Groovy/Grails til kunder?
Groovys dynamiske natur introducere et akut behov for at kende til mange at de gamle Java design pattern for at forså den lethed og styrke man kan opnå. Enkelte metoder eller metodikker der kan instantieres med et enkelt kald invokere hele design patterns hvilket kan være mindblowing for mange. Groovy selv benytter mange eksisterende design patterns fra Java og det virker på mig som de fleste nye groovy patterns er løsninger på tekniske problemer som vi har brugt meget tid på i Java verden. Groovy sproget henvender sig mere til de faktiske forretningsprocesser, hvilket er en fantastisk ting.
- Super Glue
Java JVM er en platform er en god infrastruktur der udgør et robust underliggende fundament for Java applikationer. At benytte et scriptingsprog som Groovy i stedet for Java kan bidrage med et langt mere fleksibel og adræt applikationslag. Dette design patern samler alle de gode Java frameworks egenskaber på platformen ved hjælp af Groovy så man kan bygge på Java styrker og udnytte evnen til at skabe applikationer hurtigt og samtidigt udnytte tidligere Java ressourcer
- Liquid Heart
Dette design pattern udgør den diametrale modsætning til Super Clue. Med Liquid Heart har man en veldefineret struktur udviklet i Java, men bruger Groovy at implementer den hurtigt skiftene forretningslogik såsom beregninger og regler. Gode kandidater til dette er områder af applikationerne med komplekse forretningsregler der skifter med kort varsel hvilket gør dem en gode kandidater til Domain Driven Design/Domain Specific Language.
- Keyhole Surgery
Nogle gange har man brug for at se hvad der foregår inde i ens applikation og eksekvere kode mod udvalgte systemområder ude at skulle recompliere hele applikationen. Men Keyhole Surgery kan man konstruere en bagdør som indgang til at få eksekveret Groovy scripts. Dette design pattern er mest brugbart for support og overvågning, fejl analyse eller måske hotfix.
- Smart Configuration
Hvis dit udviklingsteam er engageret med at udvikle applikationssoftware er Groovy er et godt sted at begynde hvis man vil have smart konfiguration der kan erstatte XML filer på en langt mere konsis og udtryksfuld måde. Med et Groovy script som komplet sprog kan man ofte udtrykke formålet med konfigurationen mere elegant og meningsfuld end ved store XML filer.
- Unlimited Openness
For små til middelstore “green field” projekter er det ofte fornuftigt at “go all script” for hele projektet for at skabe en applikation som er mere præsis og udtryksfuld, ligemeget om man benytter Grails eller Griffon der virker direkte med Groovy.
Den eneste betingelse man må overveje er kompleksiteten af applikationen samt modenhed og størrelsen på dit udviklingsteam. Hvis teamet er større end ca. 5 personer og relativt uerfarne med dynamiske sprog kan projektet løbe ind i alle former for problemer ved at overgøre meta-programming funktioner som ingen ved hvordan applikationen rent faktisk virker.
- House-elf
Hvis ønsket er at nå mål hurtigt med hjælp fra Groovy kan man oprette ad hoc-scripts. Alt fra bygge automatisering til installatører, service overvågning, rapporter, statistikker, automatiseret dokumentation, funktionelle tests, html og web-tjenester, der er masser af måder til at få kendskab og opbygge komfort i dit team ved at gennemføre disse former for scripts i Groovy.
- Prototype
Nogle gange vil du lave en analyse, en undersøgelse – et hurtigt algoritme for at afprøve en teknologi eller en ide du fik på vej hjem. Groovy, Griffon og eller Grails kan være perfekt til denne form for hurtig prototyping. Og hvis du skriver dem gundigt, er der er ingen grund til ikke at benytte dem i produktionen. For eksempel på Canoo, i stedet for en skriftlig RFQ kan man ofte blot opbygge en test for at give kunden en følelse af hvordan den vil arbejde.
- Lipstick
Lipstick er et fælles mønstre som udgør en metode til indkapsling af et Java API med et tyndt lag af Groovy for at gøre det lettere at arbejde med.
- Ghost Writer
Beskiver mønstre der placere annotationer og AST transformationer til at forstrække Java API ved at tilføje funktionalitet ved hjælp af meta-programmering på de tværgående objekt stukturer i modellen. Dette mønstre udnytter Groovy’s indbyggede AOP lignende faciliteter.
By Frank Vilhelmsen - 2 tags: groovy pattern - Add comment