Academiejaar 2017 - 2018
Jakob Lierman
HoGent
,Jakob Lierman OO Ontwerpen III
Inhoud
INLEIDING .................................................................................................................................................. 4
CREATIONAL PATTERNS .............................................................................................................................................. 4
BEHAVIOR PATTERNS ................................................................................................................................................. 4
STRUCTURAL PATTERNS .............................................................................................................................................. 4
FACTORY PATTERN ..................................................................................................................................... 5
FACTORY METHOD .................................................................................................................................................... 5
UML Diagram ................................................................................................................................................... 5
Ontwerpprincipe .............................................................................................................................................. 5
Code ................................................................................................................................................................. 5
ABSTRACT FACTORY ................................................................................................................................................... 6
UML Diagram ................................................................................................................................................... 7
BUILDER PATTERN ...................................................................................................................................... 8
UML DIAGRAM ........................................................................................................................................................ 8
CODE ...................................................................................................................................................................... 8
VOORDELEN ........................................................................................................................................................... 10
GEBRUIK EN NADELEN .............................................................................................................................................. 10
FLUENT VARIANT ..................................................................................................................................................... 10
SINGLETON PATTERN................................................................................................................................ 12
UML DIAGRAM ...................................................................................................................................................... 12
CODE .................................................................................................................................................................... 12
MULTITHREADING OPLOSSINGEN................................................................................................................................ 12
Zonder lazy loading ........................................................................................................................................ 12
Met lazy loading............................................................................................................................................. 13
TEMPLATE METHOD ................................................................................................................................. 14
UML DIAGRAM ...................................................................................................................................................... 14
CODE .................................................................................................................................................................... 14
COMMAND PATTERN ............................................................................................................................... 17
UML DIAGRAM ...................................................................................................................................................... 17
CODE .................................................................................................................................................................... 17
MACRO-COMMAND................................................................................................................................................. 19
UML Diagram ................................................................................................................................................. 19
Code ............................................................................................................................................................... 19
ITERATOR ................................................................................................................................................. 21
UML DIAGRAM ...................................................................................................................................................... 21
CODE .................................................................................................................................................................... 21
COMPOSITE PATTERN ............................................................................................................................... 23
UML DIAGRAM ...................................................................................................................................................... 23
CODE .................................................................................................................................................................... 23
NULL ITERATOR ....................................................................................................................................................... 25
COMPOSITE ITERATOR .............................................................................................................................................. 25
ADAPTER PATTERN ................................................................................................................................... 27
UML DIAGRAM ...................................................................................................................................................... 27
CODE .................................................................................................................................................................... 27
2
,Jakob Lierman OO Ontwerpen III
PROXY PATTERN....................................................................................................................................... 29
UML DIAGRAM ...................................................................................................................................................... 29
CODE .................................................................................................................................................................... 29
REMOTE PROXY (RMI)............................................................................................................................................. 30
VIRTUAL PROXY ...................................................................................................................................................... 31
DYNAMIC PROXY ..................................................................................................................................................... 32
3
,Jakob Lierman OO Ontwerpen III
Inleiding
Creational Patterns
- Factory method
- Abstract factory
- Builder
- Singleton
Behavior Patterns
- Template method
- Command
- Iterator
Structural Patterns
- Composite
- Adaptor
- Proxy
4
, Jakob Lierman OO Ontwerpen III
Factory Pattern
Voorbeeld: pizzeria.
Factory Method
Het factory method pattern definieert een interface voor het creëren van een object, maar laat de
subklassen beslissen welke klasse er geïnstantieerd wordt. De factory method draagt de instantie
over aan de subklassen.
UML Diagram
Ontwerpprincipe
Dependency inversion principe:
- Wees afhankelijk van abstracties
- Wees niet afhankelijk van concrete klassen
Het principe suggereert dat onze high-level componenten niet afhankelijk mogen zijn van onze low-
level componenten. Beiden zouden moeten afhangen van abstracties.
Code
public interface PizzaIngredientFactory {
public Dough createDough();
public Sauce createSauce();
public Cheese createCheese();
}
public class BinfPizzaIngredientFactory implements PizzaIngredientFactory {
public Dough createDough() {
return new ThinCrustDough();
}
public Sauce createSauce() {
return new MarinaraSauce();
}
public Cheese createCheese() {
return new ReggianoCheese();
}
}
public abstract class Pizza {
private Dough dough;
5