Java patterns Introductie tot Go F patterns in

  • Slides: 24
Download presentation
Java patterns Introductie tot Go. F patterns in Java

Java patterns Introductie tot Go. F patterns in Java

Lectuur Go. F boek James Cooper Bruce Eckel

Lectuur Go. F boek James Cooper Bruce Eckel

Wat ? Een design pattern is een standaard oplossing voor een veel voorkomend design

Wat ? Een design pattern is een standaard oplossing voor een veel voorkomend design probleem Drie types (Go. F) 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…

Creational Factory objecten creeren via factory interface Abstract Factory factory creeren via factory-factory interface

Creational Factory 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

Factory pattern Wat ? Objecten creeren via ander object (factory) i. p. v. rechtstreeks

Factory pattern Wat ? 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)

Factory pattern Opgave (Cooper) Eenvoudige Namer klasse : splitst volledige naam op in voornaam

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 (First of Last. First)

Abstract Factory Pattern Wat ? Niveau van indirectie bovenop Factory, d. w. z de

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

Abstract Factory pattern Oefening: Creeer abstracte factory om een String en een int-waarde op

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

Singleton pattern Wat ? Aantal instantiaties van een klasse beperken tot 1 (of enkele)

Singleton pattern Wat ? Aantal instantiaties van een klasse beperken tot 1 (of enkele) Wanneer ? Meestal opgelegd door het model zelf Dure objecten

Singleton pattern Opgave( Eckel ) Creeer singleton klasse Singleton Methoden : get. Instance() geeft

Singleton pattern Opgave( Eckel ) Creeer singleton klasse Singleton Methoden : get. Instance() geeft singleton object terug int get. Value() geeft waarde void set. Value( int value ) zet waarde Schrijf test waarin je singleton opvraagt, waarde checkt, verandert, opnieuw singleton opvraagt, …

Singleton pattern Opgave( Eckel ) Creer pool van connecties Connection interface Connection. Pool :

Singleton pattern Opgave( Eckel ) Creer pool van connecties Connection interface Connection. Pool : singleton, gebruikt Pool. Manager : managet pool van objecten Connection. Implementation

Builder pattern Wat ? Scheiding van object creatie (gelijk) en representatie (verschillend) Wanneer ?

Builder pattern Wat ? 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

Opgave Creeer twee builder klassen die een string opsplitsen in woorden en in resp.

Opgave Creeer twee builder klassen die een string opsplitsen in woorden en in resp. een Map en een Sorted. Set opslaan Klasse : Base. Builder : basisklasse die build proces definieert Set. Builder Map. Builder

Prototype pattern Wat ? Creatie van object door klonen Wanneer ? Object moet gecopieerd

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 !

Prototype pattern Oefening : Implementeer een clone() methode die een diepe kopie maakt door

Prototype pattern Oefening : Implementeer een clone() methode die een diepe kopie maakt door het object te serializeren/deserializeren

Structural Adapter Interface aanpassen aan andere interface Bridge Interface en implementatie kunnen onafhankelijk evolueren

Structural Adapter 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

Adapter Wat ? Klasse die een bestaande interface converteert naar een andere (door delegatie)

Adapter Wat ? Klasse die een bestaande interface converteert naar een andere (door delegatie) Wanneer ? Bestaande klasse moet aangepast worden aan een nieuwe interface

Adapter Oefening : Adaptee klasse stelt lijst van autos voor met naam + prijs

Adapter Oefening : Adaptee klasse stelt lijst van autos voor met naam + prijs Adapter moet Adaptee aanpassen aan Swing table model

Bridge Wat ? Abstracte klasse met meerdere concrete implementaties via delegatie Wanneer ? Als

Bridge Wat ? Abstracte klasse met meerdere concrete implementaties via delegatie Wanneer ? Als men interfaces en concrete implementaties apart wil laten evolueren

Bridge Voorbeeld : Abstraction Refined. Abstraction Implementor Concrete. Implementor. A Concrete. Implementor. B

Bridge Voorbeeld : Abstraction Refined. Abstraction Implementor Concrete. Implementor. A Concrete. Implementor. B

Composite Wat ? gemeenschappelijke abstracte klasse voor geheel/deel Wanneer ? boomstructuren

Composite Wat ? gemeenschappelijke abstracte klasse voor geheel/deel Wanneer ? boomstructuren

Composite Oefening : Stel klassen om een logische expressie te evalueren en uit te

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

Decorator Wat ? Dynamisch toevoegen van functionaliteit door te wrappen Wanneer ? Alternatief voor

Decorator Wat ? Dynamisch toevoegen van functionaliteit door te wrappen Wanneer ? Alternatief voor subklassen indien meerdere orthogonale toevoegingen mogelijk

Decorator java. io. Buffered. Reader is een voorbeeld van een decorator van de java.

Decorator java. io. Buffered. Reader 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