30
Les design patterns dans l’Android Framework Prof. Sheng-De Wang Syrine Trabelsi

Les design patterns dans l’Android Framework

Embed Size (px)

Citation preview

Page 1: Les design patterns dans l’Android Framework

Les design patterns dans l’Android Framework

Prof. Sheng-De Wang Syrine Trabelsi

Page 2: Les design patterns dans l’Android Framework

2

Plan:

Design Patterns Framework Android Framework & Design Pattern Conclusion

Page 3: Les design patterns dans l’Android Framework

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.

Page 4: Les design patterns dans l’Android Framework

4

Cycle de vie du logiciel

Page 5: Les design patterns dans l’Android Framework

5

Le Framework Android

Android Operating Systems

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

Page 6: Les design patterns dans l’Android Framework

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.

Page 7: Les design patterns dans l’Android Framework

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.

Page 8: Les design patterns dans l’Android Framework

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

Page 9: Les design patterns dans l’Android Framework

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

Page 10: Les design patterns dans l’Android Framework

10

Factory Method Pattern:

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

Page 11: Les design patterns dans l’Android Framework

11

Exemple Android de Pattern Factory Method

View

Activity

GraphicView

OnCreate()

MyDraw

OnCreate()

...View= FactoryMethod()...

return new GraphicView

Page 12: Les design patterns dans l’Android Framework

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); … } }

Page 13: Les design patterns dans l’Android Framework

13

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

Page 14: Les design patterns dans l’Android Framework

14

View et ViewGroup de l’Android

Page 15: Les design patterns dans l’Android Framework

15

Encore!

Page 16: Les design patterns dans l’Android Framework

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

Page 17: Les design patterns dans l’Android Framework

Example de l’Observer Pattern

Subject

Observers

17

Page 18: Les design patterns dans l’Android Framework

Encore!

18

Page 19: Les design patterns dans l’Android Framework

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

Page 20: Les design patterns dans l’Android Framework

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

20

SimpleCursorAdapter ListAdapter

Cursor TextView ListView

control

Page 21: Les design patterns dans l’Android Framework

Model

21

Page 22: Les design patterns dans l’Android Framework

View

22

Page 23: Les design patterns dans l’Android Framework

23

Page 24: Les design patterns dans l’Android Framework

Control

24

Page 25: Les design patterns dans l’Android Framework

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

Page 26: Les design patterns dans l’Android Framework

// 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

Page 27: Les design patterns dans l’Android Framework

27

Spinner

SimpeCursorAdapter

cursor

SQLite

Page 28: Les design patterns dans l’Android Framework

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

Page 29: Les design patterns dans l’Android Framework

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é

Page 30: Les design patterns dans l’Android Framework

30

Merci de votre attention!