Upload
luca-mezzalira
View
2.671
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
Your new superhero:AS3 design pattern
Your new superhero: AS3 design patternWednesday, November 10, 2010
Multiscreen development with Flash Platform
Wednesday, November 10, 2010
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
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
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
Design Pattern?
• Creational patterns
• Structural patterns
• Behavioral patterns
• Concurrency patterns
• Multiple patterns
Wednesday, November 10, 2010
Creational pattern
• permettono di creare oggetti adatti alla
situazione in cui verranno inseriti
• Alcuni pattern:
• Factory
• Singleton
• Object pool
Wednesday, November 10, 2010
Structural pattern
• Semplificano il modo in cui mettono in relazione
gli oggetti
• Alcuni pattern:
• Façade
• Proxy
• Decorator
Wednesday, November 10, 2010
Behavioral pattern
• Identificano un metodo comune per comunicare
tra oggetti
• Alcuni pattern:
• Command
• Memento
• Observer
Wednesday, November 10, 2010
I nostri nuovi eroi
• Singleton (creational pattern)
• Façade (structural pattern)
• Proxy (structural pattern)
• Command (behavioral pattern)
• Observer (behavioral pattern)
• Mediator (behavioral pattern)
• MVC (multiple pattern)
Wednesday, November 10, 2010
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
Singleton
Wednesday, November 10, 2010
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
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
Façade
Wednesday, November 10, 2010
Façade
Wednesday, November 10, 2010
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
Proxy
Wednesday, November 10, 2010
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
Command
Wednesday, November 10, 2010
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
Observer• Subject Interface
• Observer Interface
Wednesday, November 10, 2010
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
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
Wednesday, November 10, 2010
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
Dependency Injection
Wednesday, November 10, 2010
Useremo i Design Pattern?!
Partendo dal presupposto che ci vorrà tempo per
impararli e riconoscere quando usarli, ma...
Wednesday, November 10, 2010
Libri da non perdere!
http://www.as3dp.com/
Wednesday, November 10, 2010
Domande e risposte
blog: http://lucamezzalira.comtwitter: lucamezzaliraemail: [email protected]
Wednesday, November 10, 2010