Les design patterns dans l’Android Framework

Preview:

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!

Recommended