Cours design pattern m youssfi partie 6 proxy

8
Design Patterns Design Patterns Part 6 Part 6 Mohamed Youssfi [email protected] Mohamed Youssfi Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA) ENSET, Université Hassan II Casablanca, Maroc Email : [email protected] Supports de cours : http://fr.slideshare.net/mohamedyoussfi9 Chaîne vidéo : http://youtube.com/mohamedYoussfi Recherche : http://www.researchgate.net/profile/Youssfi_Mohamed/publications

description

Design pattern Proxy

Transcript of Cours design pattern m youssfi partie 6 proxy

Page 1: Cours design pattern m youssfi partie 6 proxy

Design PatternsDesign PatternsPart 6Part 6

Mohamed Youssfi

[email protected]

Mohamed Youssfi

Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA)

ENSET, Université Hassan II Casablanca, Maroc

Email : [email protected]

Supports de cours : http://fr.slideshare.net/mohamedyoussfi9

Chaîne vidéo : http://youtube.com/mohamedYoussfi

Recherche : http://www.researchgate.net/profile/Youssfi_Mohamed/publications

Page 2: Cours design pattern m youssfi partie 6 proxy

Pattern Pattern ProxyProxy

Page 3: Cours design pattern m youssfi partie 6 proxy

Pattern ProxyPattern Proxy

� Catégorie :

◦ Structure

� Objectif du pattern◦ Fournir un intermédiaire entre la partie cliente et un ◦ Fournir un intermédiaire entre la partie cliente et un

objet pour contrôler les accès à ce dernier.

� Résultat :

◦ Le Design Pattern permet d'isoler le comportement lors de l'accès à un objet.

[email protected]

Page 4: Cours design pattern m youssfi partie 6 proxy

Diagramme de classes du pattern ProxyDiagramme de classes du pattern Proxy

[email protected]

Page 5: Cours design pattern m youssfi partie 6 proxy

Raison d’utilisationRaison d’utilisation� Les opérations d'un objet sont coûteuses en temps ou

sont soumises à une gestion de droits d'accès.

� Il est nécessaire de contrôler l'accès à un objet.

� Cela peut être un système de chargement d'un document. Le document est très lourd à charger en mémoire ou il faut certaines habilitations pour accéder à ce document.faut certaines habilitations pour accéder à ce document.

� L'objet réel (système de chargement classique) est l'implémentation. L'intermédiaire entre l'implémentation et la partie cliente est le proxy.

� Le proxy fournit la même interface que l'implémentation. Mais il ne charge le document qu'en cas de réel besoin (pour l'affichage par exemple) ou n'autorise l'accès que si les conditions sont satisfaites.

[email protected]

Page 6: Cours design pattern m youssfi partie 6 proxy

ResponsabilitésResponsabilités� Abstraction : définit l'interface des classes

Implémentation et Proxy.

� Implémentation : implémente l'interface. Cette classe définit l'objet que l'objet Proxy représente.

� Proxy : fournit un intermédiaire entre la partie cliente et l'objet Implémentation. Cet intermédiaire peut avoir l'objet Implémentation. Cet intermédiaire peut avoir plusieurs buts (synchronisation, contrôle d'accès, cache, accès distant, ...). Dans l'exemple, la classe Proxy n'instancie un objet Implémentation qu'en cas de besoin pour appeler la méthode correspondante de la classe Implémentation.

� La partie cliente appelle la méthode operation() de l'objet Proxy.

[email protected]

Page 7: Cours design pattern m youssfi partie 6 proxy

ImplémentationImplémentation

public interface Abstraction {

public void operation();

}

public class Implementation implements Abstraction {@Overridepublic void operation() {System.out.println("Exécution de l'opération de

l'implémentation...");}}

/* Abstraction.java */

/* Implemantation.java */

[email protected]

l'implémentation...");}}

/* Proxy.java */

public class Proxy implements Abstraction {

private Implementation implementation;

@Override

public void operation() {

System.out.println("Vérification des conditions d'accès par le

proxy");

implementation=new Implementation();

implementation.operation();

}}

Page 8: Cours design pattern m youssfi partie 6 proxy

ImplémentationImplémentation

public class Client {

public static void main(String[] args) {

Abstraction proxy=new Proxy();

proxy.operation();

}}

/* Application.java */

Vérification des conditions d'accès par le proxy

Exécution de l'opération de l'implémentation...

:Client:Client

[email protected]

:Client:Client

:Proxy:ProxyCréer

operation

Vérification

:Implémentation:ImplémentationCréer

operation