SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
TP1 : LES DESIGNS PATTERNS APPLIQUES AUX
SYSTEMES DISTRIBUES
PERIODE 4
MARIEM ZAOUALI | ESPRIMS 1
TP1 : Les designs patterns appliqués aux systèmes
distribués
Problème
Le but de se TP est de développer en Java, une simulation d’application distribuée.
Cette application doit masquer à l’utilisateur, le fait qu’elle se connecte à un serveur
distant et doit gérer tout en toute transparence. On veut que cette application soit
en mesure d’appliquer les bonnes pratiques de développement en suivant les
recommandations suivantes :
• Implémenter le pattern Abstract factory pour la création des demandes de
connexion au serveur distant
• Implémenter le pattern Interceptor
Implémentation du pattern Abstract factory
L’utilité du pattern
Le but de pattern Abstract Factory est de créer une famille d’objets sans avoir besoin
de connaître l’implémentation concrète permettant la création de l’objet. Ceci veut
dire que votre programme va pouvoir vous donner vers la fin un groupe d’objets sans
avoir à passer par l’instruction « new ». Elle est encapsulée.
Le diagramme de classES
Figure 1 Diagramme de classes du pattern Abstract Factory
Les participants au pattern sont les suivants :
TP1 : LES DESIGNS PATTERNS APPLIQUES AUX
SYSTEMES DISTRIBUES
PERIODE 4
MARIEM ZAOUALI | ESPRIMS 2
• AbstractFactory (FabriqueCnx): est une interface spécifiant les signatures e
méthodes créant différents produits :
o ConcreteFactoryA, ConcreteFactoryB (FabriqueCnxTcp,
FabriqueCnxUdp) sont les classes concrètes implantant les méthodes
créant les produits pour chaque famille de produit. Connaissant la
famille et le produit, elles sont capables de créer une instance du
produit pour cette famille.
• ProductA, ProductB (CnxServeurRPC, CnxSGBD) sont deux classes abstraites
des produits indépendamment de leur famille. Leurs familles sont introduites
dans leurs sous-classes concrètes ; Les classes concrètes sont :
CnxServeurRPC_TCP, CnxSGBD_TCP, CnxServeurRPC_UDP, CnxSGBD_UDP
• FactoryProvider est la classe qui fournira l’instance de la fabrique pour créer
les instances des objets.
Implémentation
NB : On rappelle que TCP est un mode de connexion synchrone
entre un client serveur, UDP est un mode de connexion asynchrone.
Ouvrir votre IDE pour écrire un programme en Java en suivant les instructions dans le
tableau 1 :
La classe/interface Le code à écrire
FabriqueCnx Une interface contenant les deux
méthodes createCnxServeurRPC et
createCnxSGBD
FabriqueCnxTcp, FabriqueCnxUdp Implémente l’interface Fabrique Cnx.
Dans ces deux classes, il faut
implémenter les méthodes qui font
l’affichage suivant (respectivement
dans la classe/méthode
corresponsante) :
Configuration de l’adresse du
serveruRPC/SGBD
Configuration du port
Etablissement de la connexion TCP/UDP
Connexion établie avec succès.
CnxServeurRPC, CnxSGBD Deux interfaces
CnxServeurRPC_TCP, CnxSGBD_TCP,
CnxServeurRPC_UDP, CnxSGBD_UDP
Implémentent les interfaces
précédentes, de sorte que chaque
interface est implémentée par deux
classes concrètes
FactoryProvider La méthode getFactory(int param)
TP1 : LES DESIGNS PATTERNS APPLIQUES AUX
SYSTEMES DISTRIBUES
PERIODE 4
MARIEM ZAOUALI | ESPRIMS 3
Si ce param == 1 : créer un objet de
type FabriqueCnx qui lance une
instanciation de FabriqueCnxTcp
Si ce param == 2 : créer un objet de
type FabriqueCnx qui lance une
instanciation de FabriqueCnxUDP
main Ajouter deux variables int statiques :
nbreCnxServeur=2 et nbreCnxSGBD =3
Dans la fonction main :
1. Créer une instance du Factory
provider qui s’appelle fa.
2. Demander à l’utilisateur quel
type de connexion il veut établir
3. Appeler maintenant getFactory()
4. Créer deux tableaux : le premier
s’appelle CnxSerTab de type
CnxServeurRPC et de taille
nbreCnxServeur, le deuxième
tableau s’appelle CnxSGBDTab
de type CnxSGBD et de taille
nbreCnxSGBD
5. Boucler, dans chaque tableau,
en appelant sur fa, la méthode
de création du produit (soit celle
qui crée CnxServeurRPCTCP ou
UDP ou celle qui crée
CnxSGBDTCP ou UDP)
Implémentation du pattern interceptor
L’utilité du pattern
Ce pattern est utilisé lorsque des systèmes ou des cadres logiciels veulent offrir un
moyen de modifier ou d'augmenter leur cycle de traitement habituel.
TP1 : LES DESIGNS PATTERNS APPLIQUES AUX
SYSTEMES DISTRIBUES
PERIODE 4
MARIEM ZAOUALI | ESPRIMS 4
Le diagramme de classes
Figure 2 Diagramme de classes du design pattern Interceptor
Les participants au pattern sont les suivants :
• Filter - va exécuter une tâche avant ou après l’exécution d’un gestionnaire
de requêtes
• Filter Chain - gère plusieurs filtres et les exécute suivant un ordre sur une
cible(target).
• Target - Target exécute les requêtes
• Filter Manager - gère les filtres et Filter Chain.
• Client - Client est l’objet qui envoie la requête à la cible (Target).
Implémentation
Continuez dans le même programme en suivant les instructions dans le tableau 2 :
La classe/interface Le code à écrire
Filter Une interface
AuthenticationFilter, DebugFilter Implémentent l’interface Filter. Dans ces
deux classes, implémenter
execute(String request) par des
messages d’affichage :
Un filtre Debug/authentification a été
ajouté + request !
Filter Chain Créer deux attributs privés :
Filters de type List<Filter>
TP1 : LES DESIGNS PATTERNS APPLIQUES AUX
SYSTEMES DISTRIBUES
PERIODE 4
MARIEM ZAOUALI | ESPRIMS 5
Target de type Target
addFilter(Filter filter) appelle la méthode
de la List filters pour ajouter filter
execute(String request) : va parcourir la
List Filters, et lance pour chaque case, la
méthode execute en passant request
en paramètre
en sortant de la boucle, appellez sur
l’objet target, la fonction executez en
prenant en paramètre, le paramètre
request
setTarget(Target target), affecte l’objet
target à l’attribut target de la classe.
Target Dans la méthode execute(String
request), faites l’affichage suivant
En cours d’exécution de + request
FilterManager Contient un objet de type FilterChain,
un constructeur avec un paramètre
Target : on instance l’objet de type
FilterChain sur lequel on appelle
setTarget.
Deux autres procédures à ajouter :
setFilter(Filter filter) qui appelle la
méthode addFilter de l’attribut
filterChain.
La procédure filterRequest qui appelle
la méthode execute de filterChain
main 1. Instancier un FilterManager (dans
ce constructeur, on appelle new
Target())
2. Appeler sur l’objet de Filter
manager deux fois la méthode
setFilter, pour ajouter un filtre de
type AuthenticationFilter puis un
autre de type DebugFilter
3. Appeler filterRequest
Le lien entre les deux manipulations
Votre tâche maintenant est de modifier le main, de sorte que vous ne permettez au
filterManager de commencer son traitement que lorsque votre connexion au
ServeurRPC ou SGBD est réussie et qu’il reste encore des instances disponibles.

Contenu connexe

Tendances

Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Cours c#
Cours c#Cours c#
Cours c#zan
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simplesPethrvs
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistVincent Agnus
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Debutermatlab
DebutermatlabDebutermatlab
Debutermatlabnejmzad
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11Microsoft
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlabN NASRI
 

Tendances (20)

C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Cours c#
Cours c#Cours c#
Cours c#
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Debutermatlab
DebutermatlabDebutermatlab
Debutermatlab
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlab
 

Similaire à Tp1 design patternappliques

Patrons de creation
Patrons de creationPatrons de creation
Patrons de creationomri med
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_threadSaber LAJILI
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Jean-Michel Doudoux
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de baseMariem ZAOUALI
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfSouf212
 
AOP.pptx
AOP.pptxAOP.pptx
AOP.pptxManalAg
 
Creation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpiCreation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpiKhalid EDAIG
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Faycel Chaoua
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_threadSaber LAJILI
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...IHM'10
 

Similaire à Tp1 design patternappliques (20)

Patrons de creation
Patrons de creationPatrons de creation
Patrons de creation
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
Atelier gwt
Atelier gwtAtelier gwt
Atelier gwt
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de base
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
 
AOP.pptx
AOP.pptxAOP.pptx
AOP.pptx
 
Perf university
Perf universityPerf university
Perf university
 
Creation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpiCreation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpi
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
 

Plus de Mariem ZAOUALI

Chap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonChap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonMariem ZAOUALI
 
Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Mariem ZAOUALI
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numériqueMariem ZAOUALI
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en pythonMariem ZAOUALI
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en pythonMariem ZAOUALI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jmsMariem ZAOUALI
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures repartiesMariem ZAOUALI
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaMariem ZAOUALI
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabMariem ZAOUALI
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursiveMariem ZAOUALI
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Mariem ZAOUALI
 

Plus de Mariem ZAOUALI (11)

Chap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonChap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en python
 
Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numérique
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en python
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en python
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corba
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursive
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia
 

Tp1 design patternappliques

  • 1. TP1 : LES DESIGNS PATTERNS APPLIQUES AUX SYSTEMES DISTRIBUES PERIODE 4 MARIEM ZAOUALI | ESPRIMS 1 TP1 : Les designs patterns appliqués aux systèmes distribués Problème Le but de se TP est de développer en Java, une simulation d’application distribuée. Cette application doit masquer à l’utilisateur, le fait qu’elle se connecte à un serveur distant et doit gérer tout en toute transparence. On veut que cette application soit en mesure d’appliquer les bonnes pratiques de développement en suivant les recommandations suivantes : • Implémenter le pattern Abstract factory pour la création des demandes de connexion au serveur distant • Implémenter le pattern Interceptor Implémentation du pattern Abstract factory L’utilité du pattern Le but de pattern Abstract Factory est de créer une famille d’objets sans avoir besoin de connaître l’implémentation concrète permettant la création de l’objet. Ceci veut dire que votre programme va pouvoir vous donner vers la fin un groupe d’objets sans avoir à passer par l’instruction « new ». Elle est encapsulée. Le diagramme de classES Figure 1 Diagramme de classes du pattern Abstract Factory Les participants au pattern sont les suivants :
  • 2. TP1 : LES DESIGNS PATTERNS APPLIQUES AUX SYSTEMES DISTRIBUES PERIODE 4 MARIEM ZAOUALI | ESPRIMS 2 • AbstractFactory (FabriqueCnx): est une interface spécifiant les signatures e méthodes créant différents produits : o ConcreteFactoryA, ConcreteFactoryB (FabriqueCnxTcp, FabriqueCnxUdp) sont les classes concrètes implantant les méthodes créant les produits pour chaque famille de produit. Connaissant la famille et le produit, elles sont capables de créer une instance du produit pour cette famille. • ProductA, ProductB (CnxServeurRPC, CnxSGBD) sont deux classes abstraites des produits indépendamment de leur famille. Leurs familles sont introduites dans leurs sous-classes concrètes ; Les classes concrètes sont : CnxServeurRPC_TCP, CnxSGBD_TCP, CnxServeurRPC_UDP, CnxSGBD_UDP • FactoryProvider est la classe qui fournira l’instance de la fabrique pour créer les instances des objets. Implémentation NB : On rappelle que TCP est un mode de connexion synchrone entre un client serveur, UDP est un mode de connexion asynchrone. Ouvrir votre IDE pour écrire un programme en Java en suivant les instructions dans le tableau 1 : La classe/interface Le code à écrire FabriqueCnx Une interface contenant les deux méthodes createCnxServeurRPC et createCnxSGBD FabriqueCnxTcp, FabriqueCnxUdp Implémente l’interface Fabrique Cnx. Dans ces deux classes, il faut implémenter les méthodes qui font l’affichage suivant (respectivement dans la classe/méthode corresponsante) : Configuration de l’adresse du serveruRPC/SGBD Configuration du port Etablissement de la connexion TCP/UDP Connexion établie avec succès. CnxServeurRPC, CnxSGBD Deux interfaces CnxServeurRPC_TCP, CnxSGBD_TCP, CnxServeurRPC_UDP, CnxSGBD_UDP Implémentent les interfaces précédentes, de sorte que chaque interface est implémentée par deux classes concrètes FactoryProvider La méthode getFactory(int param)
  • 3. TP1 : LES DESIGNS PATTERNS APPLIQUES AUX SYSTEMES DISTRIBUES PERIODE 4 MARIEM ZAOUALI | ESPRIMS 3 Si ce param == 1 : créer un objet de type FabriqueCnx qui lance une instanciation de FabriqueCnxTcp Si ce param == 2 : créer un objet de type FabriqueCnx qui lance une instanciation de FabriqueCnxUDP main Ajouter deux variables int statiques : nbreCnxServeur=2 et nbreCnxSGBD =3 Dans la fonction main : 1. Créer une instance du Factory provider qui s’appelle fa. 2. Demander à l’utilisateur quel type de connexion il veut établir 3. Appeler maintenant getFactory() 4. Créer deux tableaux : le premier s’appelle CnxSerTab de type CnxServeurRPC et de taille nbreCnxServeur, le deuxième tableau s’appelle CnxSGBDTab de type CnxSGBD et de taille nbreCnxSGBD 5. Boucler, dans chaque tableau, en appelant sur fa, la méthode de création du produit (soit celle qui crée CnxServeurRPCTCP ou UDP ou celle qui crée CnxSGBDTCP ou UDP) Implémentation du pattern interceptor L’utilité du pattern Ce pattern est utilisé lorsque des systèmes ou des cadres logiciels veulent offrir un moyen de modifier ou d'augmenter leur cycle de traitement habituel.
  • 4. TP1 : LES DESIGNS PATTERNS APPLIQUES AUX SYSTEMES DISTRIBUES PERIODE 4 MARIEM ZAOUALI | ESPRIMS 4 Le diagramme de classes Figure 2 Diagramme de classes du design pattern Interceptor Les participants au pattern sont les suivants : • Filter - va exécuter une tâche avant ou après l’exécution d’un gestionnaire de requêtes • Filter Chain - gère plusieurs filtres et les exécute suivant un ordre sur une cible(target). • Target - Target exécute les requêtes • Filter Manager - gère les filtres et Filter Chain. • Client - Client est l’objet qui envoie la requête à la cible (Target). Implémentation Continuez dans le même programme en suivant les instructions dans le tableau 2 : La classe/interface Le code à écrire Filter Une interface AuthenticationFilter, DebugFilter Implémentent l’interface Filter. Dans ces deux classes, implémenter execute(String request) par des messages d’affichage : Un filtre Debug/authentification a été ajouté + request ! Filter Chain Créer deux attributs privés : Filters de type List<Filter>
  • 5. TP1 : LES DESIGNS PATTERNS APPLIQUES AUX SYSTEMES DISTRIBUES PERIODE 4 MARIEM ZAOUALI | ESPRIMS 5 Target de type Target addFilter(Filter filter) appelle la méthode de la List filters pour ajouter filter execute(String request) : va parcourir la List Filters, et lance pour chaque case, la méthode execute en passant request en paramètre en sortant de la boucle, appellez sur l’objet target, la fonction executez en prenant en paramètre, le paramètre request setTarget(Target target), affecte l’objet target à l’attribut target de la classe. Target Dans la méthode execute(String request), faites l’affichage suivant En cours d’exécution de + request FilterManager Contient un objet de type FilterChain, un constructeur avec un paramètre Target : on instance l’objet de type FilterChain sur lequel on appelle setTarget. Deux autres procédures à ajouter : setFilter(Filter filter) qui appelle la méthode addFilter de l’attribut filterChain. La procédure filterRequest qui appelle la méthode execute de filterChain main 1. Instancier un FilterManager (dans ce constructeur, on appelle new Target()) 2. Appeler sur l’objet de Filter manager deux fois la méthode setFilter, pour ajouter un filtre de type AuthenticationFilter puis un autre de type DebugFilter 3. Appeler filterRequest Le lien entre les deux manipulations Votre tâche maintenant est de modifier le main, de sorte que vous ne permettez au filterManager de commencer son traitement que lorsque votre connexion au ServeurRPC ou SGBD est réussie et qu’il reste encore des instances disponibles.