Upload
syrine-trabelsi
View
722
Download
0
Embed Size (px)
Citation preview
Les design patterns dans l’Android Framework
Prof. Sheng-De Wang Syrine Trabelsi
2
Plan:
Design Patterns Framework Android Framework & Design Pattern Conclusion
3
Design pattern:
C’est une solution générale réutilisable. Ce n’est pas une conception finie. C’est une description ou un modèle qui peut
aider pour résoudre un problème dans de nombreuses situations.
les design patterns orienté-objet présentent généralement des relations et des interactions entre les classes et les objets.
Ils sont beaucoup utilisés dans la conception de système à base de composant.
4
Cycle de vie du logiciel
5
Le Framework Android
Android Operating Systems
•Est basé sur la conception orientée objet•Et fait partie du système d’exploitation Android
6
Un Framework peut être considérée comme:
Une conception réutilisable d'un système.
Un squelette d'une application qui peut être personnalisé par un développeur d'applications.
7
Frameworks & Patterns
Les design patterns et les Frameworks sont des concepts distincts de différentes natures.
Les Frameworks sont de nature physique et sont des logiciels exécutables utilisés dans la conception ou à l’exécution.
Les design patterns sont de nature logique , représentent les connaissances et l’expérience acquise avec le logiciel.
8
Catégories des Design Patterns :
Créateurs: s’occuper de l'initialisation et la configuration des classes et des objets.
Structuraux: s’occuper de l'interface de découplage et de la mise en œuvre des classes et des objets.
Comportementaux: Traiter les interactions dynamiques entre les associations de classes et des objets
Clin d’oeil sur les design patterns :
ObjectivesDe création De structure De
comportement
Scope Class Factory Method Adapter (class) InterpreterTemplate Method
Objet Abstract FactoryBuilderPrototypeSingleton
Adapter (object)BridgeCompositeDecoratorFacadeFlyweightProxy
Chain of ResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor
Diffère la création d'objet à une autre classe
Diffère la création d'objet à un autre objet
Décrit les algorithmes et contrôle les flux
Décrit comment assembler des objets
9
10
Factory Method Pattern:
La méthode Factory permet de différer l'instanciation des sous-classes.
11
Exemple Android de Pattern Factory Method
View
Activity
GraphicView
OnCreate()
MyDraw
OnCreate()
...View= FactoryMethod()...
return new GraphicView
12
Android Example of Factory Method Pattern-code
public class MyDraw extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new GraphicView(this)); }}
public class GraphicView extends View{ private Paint paint= new Paint(); GraphicView(Context ctx) { super(ctx); } @Override protected void onDraw(Canvas canvas) { int line_x = 10; int line_y = 50; canvas.drawColor(Color.WHITE); paint.setColor(Color.GRAY); paint.setStrokeWidth(3); canvas.drawLine(line_x, line_y, line_x+120, line_y, paint); … } }
13
Le Pattern composite:Le Pattern composite permet de traiter un groupe d'objets comme s’il était une seule instance d'un objet.
14
View et ViewGroup de l’Android
15
Encore!
Observer Pattern:
+attach(in o : Observer)+detach(in o : Observer)+notify()
Subject
+update()
Observer
+getState()
ConcreteSubject
-subjectState
+update()
ConcreteObserver
-observerState
1
-observers
*
{observerState = subject.getState() }
{return subjectState }
{for all o in observers{ o.update() } }
-subject
1 *
16
Un sous-ensemble de publish/subscribe pattern assynchrone
Example de l’Observer Pattern
Subject
Observers
17
Encore!
18
Model-View-Controller Pattern
Application de l’Observer Pattern Avantages:Réutilisation du model, faible couplage
19
La ligne continue représente un lien direct, le pointillé une association indirecte via un observateur (par exemple).
MVC Pattern in Android Cursor: model ListView: view Activity: control
20
SimpleCursorAdapter ListAdapter
Cursor TextView ListView
control
Model
21
View
22
23
Control
24
Encore!// Get a Spinner and bind it to an ArrayAdapter
that // references a String array.Spinner s1 = (Spinner)
findViewById(R.id.spinner1);ArrayAdapter adapter =
ArrayAdapter.createFromResource( this, R.array.colors,
android.R.layout.simple_spinner_item);adapter.setDropDownViewResource(android.R.la
yout.simple_spinner_dropdown_item);s1.setAdapter(adapter);
25
Spinner
ArrayAdapter
RXML
// Load a Spinner and bind it to a data query.private static String[] PROJECTION = new String[] { People._ID, People.NAME };
Spinner s2 = (Spinner) findViewById(R.id.spinner2);Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION,
null, null); SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, // Use a template // that displays a // text view cur, // Give the cursor to the list adatper new String[] {People.NAME}, // Map the NAME column in the // people database to... new int[] {android.R.id.text1}); // The "text1" view defined in // the XML templateadapter2.setDropDownViewResource(android.R.layout.simple_spinn
er_dropdown_item);s2.setAdapter(adapter2); 26
27
Spinner
SimpeCursorAdapter
cursor
SQLite
Façade Pattern:
Une façade est un objet qui fournit une interface simplifiée à un vaste ensemble de code, comme une bibliothèque de classes.
28
29
Conclusion: Android Framework- Conception orientée objet- Utilise des Design Patterns- Contient des routines d'exécution Systèmes d'exploitation Android:- Permet d’utiliser trois technologies bien
développées:Kernel Linux, Java, XML
Les facilités offertes par les Design Patterns:- Réutilisation de logiciels- Maintenance- Flexibilité
30
Merci de votre attention!