Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdMichiel Lenaerts Laatst gewijzigd meer dan 9 jaar geleden
1
Introductie tot GoF patterns in Java
Java patterns Introductie tot GoF patterns in Java
2
Lectuur GoF boek James Cooper Bruce Eckel
3
Wat ? Een design pattern is een standaard oplossing voor een veel voorkomend design probleem Drie types (GoF) Creational : patterns om objecten te creeren Structural : patterns om objecten samen te stellen Behavioral : patterns om onderling gedrag van objecten te regelen, alle andere dus…
4
Creational Factory Abstract Factory Singleton Builder Prototype
objecten creeren via factory interface Abstract Factory factory creeren via factory-factory interface Singleton klasse waarvan slechts 1 object bestaat Builder scheiding van object constructie en voorstelling Prototype objecten creeren door basisobject te klonen
5
Factory pattern Wat ? Wanneer ?
Objecten creeren via ander object (factory) i.p.v. rechtstreeks via constructor Wanneer ? Klasse van object nog niet gekend at compile-time Creatie van object overlaten aan subklasse Creatie = complex proces (bv. pool)
6
Factory pattern Opgave (Cooper)
Eenvoudige Namer klasse : splitst volledige naam op in voornaam en achternaam Twee mogelijke inputs : Piet Hein Hein,Piet Factory selecteert een correcte Namer klasse afhankelijk van input (FirstFirst of LastFirst)
7
Abstract Factory Pattern
Wat ? Niveau van indirectie bovenop Factory, d.w.z de factory zelf is abstract en wordt pas concreet na aanroepen van een creatiemethode Wanneer ? Meerdere families van objecten GUI widgets voor meerdere look-and-feels data access voor meerdere database types
8
Abstract Factory pattern
Oefening: Creeer abstracte factory om een String en een int-waarde op te halen Maak concrete factories die respectievelijk via de console en via een properties file werken
9
Singleton pattern Wat ? Wanneer ?
Aantal instantiaties van een klasse beperken tot 1 (of enkele) Wanneer ? Meestal opgelegd door het model zelf Dure objecten
10
Singleton pattern Opgave( Eckel ) Creeer singleton klasse Singleton
Methoden : getInstance() geeft singleton object terug int getValue() geeft waarde void setValue( int value ) zet waarde Schrijf test waarin je singleton opvraagt, waarde checkt, verandert, opnieuw singleton opvraagt,…
11
Singleton pattern Opgave( Eckel ) Creer pool van connecties
Connection interface ConnectionPool : singleton, gebruikt PoolManager PoolManager : managet pool van objecten ConnectionImplementation
12
Builder pattern Wat ? Wanneer ?
Scheiding van object creatie (gelijk) en representatie (verschillend) Wanneer ? Creatie van meerdere objecten Creatieproces bestaat uit meerdere stappen die echter gelijk zijn voor elk object
13
Opgave Creeer twee builder klassen die een string opsplitsen in woorden en in resp. een Map en een SortedSet opslaan Klasse : BaseBuilder : basisklasse die build proces definieert SetBuilder MapBuilder
14
Prototype pattern Wat ? Creatie van object door klonen Wanneer ?
Object moet gecopieerd worden zonder dat men het type kent Java : Speciale interface hiervoor : Cloneable Opgelet : default implementatie (Object) maakt geen diepe kopie !
15
Prototype pattern Oefening :
Implementeer een clone() methode die een diepe kopie maakt door het object te serializeren/deserializeren
16
Structural Adapter Bridge Composite Decorator
Interface aanpassen aan andere interface Bridge Interface en implementatie kunnen onafhankelijk evolueren Composite Boomstructuur van objecten, zelfde interface voor tak/blad Decorator Functionaliteit toevoegen door te wrappen
17
Adapter Wat ? Klasse die een bestaande interface converteert naar een andere (door delegatie) Wanneer ? Bestaande klasse moet aangepast worden aan een nieuwe interface
18
Adapter Oefening : Adaptee klasse stelt lijst van autos voor met naam + prijs Adapter moet Adaptee aanpassen aan Swing table model
19
Bridge Wat ? Abstracte klasse met meerdere concrete implementaties via delegatie Wanneer ? Als men interfaces en concrete implementaties apart wil laten evolueren
20
Bridge Voorbeeld : Abstraction Implementor RefinedAbstraction
ConcreteImplementorA ConcreteImplementorB
21
Composite Wat ? gemeenschappelijke abstracte klasse voor geheel/deel Wanneer ? boomstructuren
22
Composite Oefening : Stel klassen om een logische expressie te evalueren en uit te printen Evaluatie en uitprinten gebeurt door de boomstructuur te doorwandelen via recursie
23
Decorator Wat ? Dynamisch toevoegen van functionaliteit door te wrappen Wanneer ? Alternatief voor subklassen indien meerdere orthogonale toevoegingen mogelijk
24
Decorator java.io.BufferedReader is een voorbeeld van een decorator van de java.io.Reader klasse Maak een decorator van java.io.Reader die lijn per lijn leest en waarbij men eerst kan vragen of er nog lijnen zijn
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.