You are on page 1of 30

Les design patterns dans

l’Android Framework

Prof. Sheng-De Wang


Syrine Trabelsi
Plan:

 Design Patterns
 Framework Android
 Framework & Design Pattern
 Conclusion

2
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.
3
Cycle de vie du logiciel

4
Le Framework Android
•Est basé sur la conception orientée objet
•Et fait partie du système d’exploitation Android

Android
Operating
Systems

5
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.

6
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.

7
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

8
Clin d’oeil sur les design patterns :
Diffère la création d'objet à une autre classe Objectives
De création De structure De comportement
Scope Class Factory Method Adapter (class) Interpreter
Template Method
Objet Abstract Factory Adapter (object) Chain of
Builder Bridge Responsibility
Prototype Composite Command
Singleton Decorator Iterator
Facade Mediator
Flyweight Memento
Proxy Observer
Diffère la création d'objet à un autre objet State
Décrit comment assembler des objets Strategy
Visitor
Décrit les algorithmes et contrôle les flux

9
Factory Method Pattern:
La méthode Factory permet de différer l'instanciation des sous-
classes.

10
Exemple Android de Pattern
Factory Method

Activity
View ...
OnCreate()
View= FactoryMethod()
...

MyDraw
GraphicView
return new GraphicView
OnCreate()

11
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);

}
}
12
Le Pattern composite:
Le Pattern composite permet de traiter un groupe d'objets comme s’il
était une seule instance d'un objet.

13
View et ViewGroup de l’Android

14
Encore!

15
Observer Pattern:
Un sous-ensemble de  publish/subscribe pattern assynchrone

Subject
-observers Observer

+attach(in o : Observer)
+detach(in o : Observer) 1 * +update()
+notify()
{for all o in observers
{ o.update() } }

ConcreteSubject -subject ConcreteObserver


-subjectState -observerState
+getState() 1 * +update()

{return subjectState } {observerState =


subject.getState() }
16
Example de l’Observer Pattern

Observers

Subject
17
Encore!

18
Model-View-Controller Pattern

 Application de l’Observer Pattern


 Avantages:

Réutilisation du model, faible couplage

La ligne continue représente un


lien direct, le pointillé une
association indirecte via un
observateur (par exemple).

19
MVC Pattern in Android
 Cursor: model
 ListView: view
 Activity: control

control

SimpleCursorAdapter ListAdapter

Cursor TextView ListView

20
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.layout.simpl
e_spinner_dropdown_item);
s1.setAdapter(adapter);

ArrayAdapter

Spinner
XML R

25
// 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 template
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_i
tem);
s2.setAdapter(adapter2);
26
SimpeCursorAdapter

Spinner
cursor

SQLite

27
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
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é

29
Merci de votre attention!

30

You might also like