0% ont trouvé ce document utile (0 vote)
54 vues14 pages

Comprendre le patron Prototype

design pattern prototype cours complet

Transféré par

stepbysteptoUranus
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
54 vues14 pages

Comprendre le patron Prototype

design pattern prototype cours complet

Transféré par

stepbysteptoUranus
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le patron

Prototype

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Objectif

Prototype est un patron de conception qui crée de nouveaux objets à partir


d’objets existants sans rendre le code dépendant de leur classe.

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Problématique
 Si nous voulons une copie exacte d’un objet, comment procède‐t‐on ?
Tout d’abord, il faut créer un nouvel objet de cette même classe. Ensuite, il
faut parcourir tous les attributs de l’objet d’origine et copier leurs valeurs dans
le nouvel objet.

 Certains objets ne peuvent pas être copiés ainsi, car leurs attributs
peuvent être privés et ne pas être visibles en dehors de l’objet.
 Etant donné qu’on doit connaître la classe de l’objet pour le
dupliquer, le code devient dépendant de cette classe.

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Solution
 Le patron de conception prototype délègue le processus de clonage aux
objets qui vont être copiés.
 Il déclare une interface commune pour tous les objets qui pourront être
clonés. Cette interface permet de cloner un objet sans coupler le code à la
classe de cet objet. En général, une telle interface ne contient qu’une seule
méthode clone.
 L’implémentation de cette méthode se ressemble dans toutes les classes. Elle
crée un objet de la classe actuelle et reporte les valeurs des attributs de
l’objet d’origine dans le nouveau.
 Un objet qui peut être cloné est appelé un prototype.

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Structure

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Exemple

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Avantages

 Réduire le besoin de sous‐classement.


 Cacher la complexité de la création des objets au client.
 Accélèrer l'instanciation de grandes classes chargées dynamiquement.

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Implémentation
Nous allons créer une classe abstraite Vehicule implémentant une interface
clonable et des classes concrètes étendant la classe Vehicule.
Une classe VehiculeCache est définie comme une étape suivante qui stocke les
objets du véhicule dans une table de hachage et renvoie leur clone sur
demande.
PrototypeExample est notre classe de démonstration qui utilise la classe
VehiculeCache pour obtenir un objet Vehicule.

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Implémentation

Cours DP– Mme Sameh HBAIEB


Le patron Prototype: Implémentation
Step 1 Create abstract class implementing Cloneable interface
Vehicle.java

public abstract class Vehicle implements Cloneable {


protected String type;
private String licenseNo;
@Override
public abstract void printVehicle(); protected Object clone() {
Object clone = null;
public String getType() { try {
return type; clone = super.clone();
} } catch (CloneNotSupportedException e) {
public String getLicenseNo() { e.printStackTrace();
return licenseNo; }
} return clone;
public void setLicenseNo(String licenseNo) { }
this.licenseNo = licenseNo; }
}
Cours DP– Mme Sameh HBAIEB
Le patron Prototype: Implémentation
Step 2 Create concrete class extending Vehicle abstract class
ThreeWheeler.java
TwoWheeler.java public class ThreeWheeler extends Vehicle {
public class TwoWheeler extends Vehicle { public ThreeWheeler() {
public TwoWheeler() { type = "Three Wheeler";
type = "Two Wheeler"; }
}
@Override
@Override public void printVehicle() {
public void printVehicle() { System.out.println("I am three wheeler.");
System.out.println("I am two wheeler."); }}
}
} FourWheeler.java
public class FourWheeler extends Vehicle {
public FourWheeler() {
type = "Four Wheeler";
}
@Override
public void printVehicle() {
System.out.println("I am four wheeler.");
Cours DP– Mme Sameh HBAIEB }}
Le patron Prototype: Implémentation
Step 3
Create class that will fetch classes objects from database and store it in Hash Table

VehicleCache.java
import java.util.Hashtable;

public class VehicleCache { static public void loadCache() {


private static Hashtable vehicleMap = new Hashtable(); TwoWheeler twoWheeler = new TwoWheeler();
twoWheeler.setLicenseNo("KA001");
public static Vehicle getVehicle(String licenseNo) { vehicleMap.put(twoWheeler.getLicenseNo(), twoWheeler);
Vehicle cachedVehicle = vehicleMap.get(licenseNo);
return (Vehicle) cachedVehicle.clone(); ThreeWheeler threeWheeler = new ThreeWheeler();
} threeWheeler.setLicenseNo("MH001");
vehicleMap.put(threeWheeler.getLicenseNo(), threeWheeler);

FourWheeler fourWheeler = new FourWheeler();


fourWheeler.setLicenseNo("BH001");
vehicleMap.put(fourWheeler.getLicenseNo(), fourWheeler);
}
}
Cours DP– Mme Sameh HBAIEB
Le patron Prototype: Implémentation
Step 4
PrototypeExample class is used to clone the object that is stored in hash table

PrototypeExample.java
public class PrototypeExample {

public static void main(String[] args) {


VehicleCache.loadCache();
Vehicle clonedVehicle = VehicleCache.getVehicle("MH001");
clonedVehicle.printVehicle(); // I am three wheeler.

clonedVehicle = VehicleCache.getVehicle("BH001");
clonedVehicle.printVehicle(); // I am four wheeler.

clonedVehicle = VehicleCache.getVehicle("KA001");
clonedVehicle.printVehicle(); // I am two wheeler.
}
}

Cours DP– Mme Sameh HBAIEB


Exercice d’application
Créer une application qui permet de gérer un ensemble de Shape par clonage

Cours DP– Mme Sameh HBAIEB

Vous aimerez peut-être aussi