Les différents design patterns pour CoreData par Emmanuel Furnon

20
Les différents design patterns pour CoreData Par Emmanuel Furnon, Développeur mobile chez Keyrus

Transcript of Les différents design patterns pour CoreData par Emmanuel Furnon

Page 1: Les différents design patterns pour CoreData par Emmanuel Furnon

Les différents design patterns pour CoreData

Par Emmanuel Furnon, Développeur mobile chez Keyrus

Page 2: Les différents design patterns pour CoreData par Emmanuel Furnon

Sommaire• CoreData• Architecture• Stack• Context

• Les différents designs patterns• Pattern DAO• Pattern Active Record

Page 3: Les différents design patterns pour CoreData par Emmanuel Furnon

Rappels sur CoreData• Ce n’est pas :• Une base de données relationnelle• Un ORM

• Gestion de graphes d’objets

• Stockage des données : • XML• SQLite• En mémoire

Page 4: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Architecture

Page 5: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData ModelDéfinition de la structure

du graphe d’objets

Les entités Les attributs Les relations

Page 6: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Context

Object A Object B

Object C Object D

Main Thread

Private Thread

NSPrivateQueueConcurrencyType

NSMainQueueConcurrencyType

Page 7: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Store

Store Coordinator

SQLite

File

InMemory

A B

C D

F E

B

Page 8: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Stack

?

Page 9: Les différents design patterns pour CoreData par Emmanuel Furnon

Core Data Nested Context• Thread-safe

• Découpage des tâches

• Synchronisation automatique

• Perte de performance sur de larges données

Page 10: Les différents design patterns pour CoreData par Emmanuel Furnon

Core Data Multiple Stacks• Découpage des tâches

• Performant sur de larges données

• Complexe à mettre en place

• Difficulté à débugger

Page 11: Les différents design patterns pour CoreData par Emmanuel Furnon

Les différents design patterns

• Comment encapsuler la couche de persistance/stockage ?

• Comment requêter une source de données ?

• Comment lier la logique métier à une base de données ?

• Comment assurer un requêtage optimisé et performant ?

Page 12: Les différents design patterns pour CoreData par Emmanuel Furnon

Couche DAO

Pattern DAO• Data Access Object

Source de données

Requêtage Résultats

Objets métiers

Page 13: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO?!

DAOs

Impl.

DAO Factory

Page 14: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO

Page 15: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO

Page 16: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO

• Flexibilité/Maintenabilité

• Séparation de la logique métier

• Testabilité

• Beaucoup de fichiers

• Peu adapté aux petits projets

Page 17: Les différents design patterns pour CoreData par Emmanuel Furnon

Couche Active Record

Pattern Active Record

Source de données

Requêtage Résultats

Objets métiers

Page 18: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern Active Record

Page 19: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern Active Record

• Facilité d’utilisation

• Lien direct avec la base

• Flexibilité

• Mise en place de requêtes complexes

Page 20: Les différents design patterns pour CoreData par Emmanuel Furnon

Lien utiles

• MagicRecord : https://github.com/magicalpanda/MagicalRecord

• Realm : https://realm.io

• Projet d’exemple : https://github.com/efurnon/CoreData-Test