3. Design Pattern?
In software engineering, a design pattern is a
general reusable solution to a commonly occurring
problem in software design. [...]
It is a description or template for how to solve a
problem that can be used in many different
situations.
Wednesday, November 10, 2010
4. Design Pattern?
• Development speed up
• Utilizzati nelle micro architetture
• Coprono molte casistiche comuni nei progetti
• Aiutano nellla realizzazione dell’architettura
• Rendono il progetto mantenibile e documentato
• Spesso li usiamo ma non ce ne rendiamo conto
Wednesday, November 10, 2010
5. Concetti base OOP
Object-oriented programming (OOP) is a
programming paradigm that uses "objects" to
design applications and computer programs
OOP basic concepts:
. Abstraction (model)
. Encapsulation (black box)
. Inheritance (extends)
. Polymorphism (change in the same field)
Wednesday, November 10, 2010
7. Creational pattern
• permettono di creare oggetti adatti alla
situazione in cui verranno inseriti
• Alcuni pattern:
• Factory
• Singleton
• Object pool
Wednesday, November 10, 2010
8. Structural pattern
• Semplificano il modo in cui mettono in relazione
gli oggetti
• Alcuni pattern:
• Façade
• Proxy
• Decorator
Wednesday, November 10, 2010
9. Behavioral pattern
• Identificano un metodo comune per comunicare
tra oggetti
• Alcuni pattern:
• Command
• Memento
• Observer
Wednesday, November 10, 2010
11. Singleton
• rappresentazione della Singleton matematica in
programmazione
• Un gruppo con un solo oggetto (es: {0})
Quando utilizzarla?
Quando vogliamo creare oggetti univoci all’interno del
nostro progetto (es.: Manager, Alert, Façade, ...)
Wednesday, November 10, 2010
13. Singleton vs Static class
• Singleton può estendere classi e implementare
interfaccie
• Le Static class hanno solo metodi statici (ricordano
molto il procedurale), in più non viene istanziata
• Con la Singleton posso istanziare anche classi
derivate
Wednesday, November 10, 2010
14. Façade
• l’accesso semplificato ad un insieme di oggetti
strutturati o ad un oggetto complesso
• riduce le dipendenze tra la libreria di oggetti e
quelli che li utilizzano
Quando utilizzarla?
Quando vogliamo semplificare l’accesso ad una parte
del codice
Wednesday, November 10, 2010
17. Proxy
• placeholder di un oggetto come un file del sistema,
una connessione remota a dati...
• Il virtual proxy in particolare è molto adatto per il
caricamento di file grafici esterni
Quando utilizzarla?
Ogni volta che utilizzo la classe Loader di Actionscript
Wednesday, November 10, 2010
19. Command
• Un oggetto che contiene le informazioni (nome del
metodo, l’oggetto che lo contiene e i parametri da
passare) utili per richiamare un metodo
• Possiamo creare i Macro Commands e i Simple
Commands
Quando utilizzarla?
Ogni volta che l’utente interagisce con la GUI della
nostra applicazione
Wednesday, November 10, 2010
21. Observer
• Un oggetto principale (Subject) tiene una lista di
oggetti osserverti (Observer) e notifica ogni cambio
di stato ad ogni oggetto osservato.
Quando utilizzarla?
Al posto degli eventi possiamo usare le notifiche che
rendono il nostro sistema più leggero e performante
Wednesday, November 10, 2010
23. Mediator
• metodo per far comunicare 2 oggetti rendendoli
totalmente indipendenti tra loro
Quando utilizzarla?
Quando vogliamo far comunicare le view con il resto
dell’applicazione
Wednesday, November 10, 2010
24. MVC
• Model View Control divide la parte di visualizzazione
dell’interfaccia dalla parte logica dell’applicazione
• Il Model è dove vado a gestire i dati
dell’applicazione (NO DATABASE!)
• La View è la parte di interfaccia vista dagli utenti
• Il Controller riceve gli input dell’utente e dialoga
con il Model per recuperare i dati che saranno poi
visualizzati dalla View
Wednesday, November 10, 2010
26. Dependency Injection
• Viene utilizzata per far collaborare due o più oggetti
mantenendo però un accoppiamento debole tra essi
• Aiuta nella mantenibilità dei progetti e nel unit
testing del progetto stesso
• Molte micro-architettura utilizzano questa tecnica
(Parsley, SWIZ, Spring AS, Mate, RobotLegs, ...)
Wednesday, November 10, 2010
28. Useremo i Design Pattern?!
Partendo dal presupposto che ci vorrà tempo per
impararli e riconoscere quando usarli, ma...
Wednesday, November 10, 2010
29. Libri da non perdere!
http://www.as3dp.com/
Wednesday, November 10, 2010
30. Domande e risposte
blog: http://lucamezzalira.com
twitter: lucamezzalira
email: luca@mart3.org
Wednesday, November 10, 2010