Académique Documents
Professionnel Documents
Culture Documents
Visitor 3
Principe 3
UML 4
Exemple Concret 4
On définit une interface qui représente un élément. 4
On crée les classes qui étendent cette interface. 4
On crée une interface qui représente Visitor. 5
On crée deux classes visitor qui étendent l'interface précédente. 6
On crée une classe de test pour la démonstration grâce aux deux classes précédentes. 7
Avantage et Inconvénient 7
Builder 8
Principe 8
UML 8
Exemple Concret 9
Command 12
Principe 12
UML 12
Exemple Concret 13
Avantage et Inconvénient 15
Avantage et Inconvénient 15
Observer 16
Principe 16
UML 16
Exemple Concret 17
Avantage et Inconvénient 17
Factory Method 18
Principe 18
UML 18
Exemple Concret 19
Avantage et Inconvénient 20
Memento 21
Principe 21
UML 21
Exemple Concret 22
Créez une classe Memento 22
Créer une classe Originator 22
Créer une classe CareTaker 23
Utilisez les objets CareTaker et Originator 23
Vérifiez la sortie 24
Avantage et Inconvénient 24
interface ObjetPere {
void accept(MonVisiteur v);
}
Exemple Concret
On définit une interface qui représente un élément.
interface CarElement {
void accept(CarElementVisitor visitor);
// Méthode à définir par les classes implémentant CarElements
}
Wheel(String name) {
this.name = name;
}
String getName() {
return this.name;
}
class Car {
CarElement[] elements;
public Car() {
this.elements = new CarElement[] {
new Wheel("front left"),
new Wheel("front right"),
new Wheel("back left"),
new Wheel("back right"),
new Body(),
new Engine()
};
}
}
printVisitor.visitCar(car);
doVisitor.visitCar(car);
}
}
Avantage et Inconvénient
Avantage Inconvénient
Principe ouvert / fermé. Vous pouvez Vous devez mettre à jour tous les
introduire un nouveau comportement qui visiteurs chaque fois qu'une classe est
peut fonctionner avec des objets de ajoutée ou supprimée de la hiérarchie
différentes classes sans changer ces des éléments.
classes.
Principe de responsabilité unique. Vous Les visiteurs peuvent ne pas avoir accès
pouvez déplacer plusieurs versions du aux champs privés et aux méthodes des
même comportement dans la même éléments avec lesquels ils sont censés
classe. travailler.
Builder est un modèle de conception créative qui vous permet de construire des objets
complexes étape par étape. Le modèle vous permet de produire différents types et
représentations d'un objet en utilisant le même code de construction.
UML
Exemple Concret
@Override
public String toString() {
return "User: "+this.firstName+", "+this.lastName+",
"+this.age+", "+this.phone+", "+this.address;
}
}
public static class UserBuilder
{
private final String firstName;
private final String lastName;
private int age;
private String phone;
private String address;
System.out.println(user1);
System.out.println(user2);
System.out.println(user3);
}
Output:
Avantage et Inconvénient
Avantage Inconvénient
Vous pouvez construire des objets étape La complexité globale du code augmente
par étape, différer les étapes de car le modèle nécessite la création de
construction ou exécuter des étapes de plusieurs nouvelles classes.
manière récursive.
UML
Exemple Concret
@Override // Command
public void execute(){
this.light.turnOn();
}
}
@Override // Command
public void execute() {
this.light.turnOff();
}
}
mySwitchManager.execute("on");
mySwitchManager.execute("off");
}
}
Avantage et Inconvénient
Avantage Inconvénient
UML
Exemple Concret
@Override
public void update(Observable o, Object news) {
this.setNews((String) news);
}
}
Avantage et Inconvénient
Avantage Inconvénient
Principe ouvert / fermé . Vous pouvez Les abonnés sont notifiés dans un ordre
introduire de nouvelles classes d'abonnés aléatoire.
sans avoir à changer le code de l'éditeur (et
vice versa s'il existe une interface éditeur).
La méthode Factory est un modèle de conception créative qui fournit une interface
pour créer des objets dans une superclasse, mais permet aux sous-classes de
modifier le type d'objets qui seront créés.
UML
Exemple Concret
Le MazeGame utilise des salles mais il confie la responsabilité de créer des salles à ses
sous-classes qui créent les classes concrètes. Le mode de jeu normal pourrait utiliser cette
méthode de modèle:
public MazeGame() {
Room room1 = makeRoom();
Room room2 = makeRoom();
room1.connect(room2);
rooms.add(room1);
rooms.add(room2);
}
Avantage et Inconvénient
Avantage Inconvénient
Principe de responsabilité unique. Vous Le code peut devenir plus compliqué car
pouvez déplacer le code de création de vous devez introduire de nombreuses
produit en un seul endroit dans le nouvelles sous-classes pour implémenter le
programme, ce qui facilite la prise en modèle. Le meilleur des cas est lorsque
charge du code vous introduisez le modèle dans une
hiérarchie existante de classes de créateur.
UML
Exemple Concret
Créez une classe Memento
public class Memento {
private String state;
originator.setState("State #1");
originator.setState("State #2");
careTaker.add(originator.saveStateToMemento());
originator.setState("State #3");
careTaker.add(originator.saveStateToMemento());
originator.setState("State #4");
System.out.println("Current State: " + originator.getState());
originator.getStateFromMemento(careTaker.get(0));
System.out.println("First saved State: " +
originator.getState());
originator.getStateFromMemento(careTaker.get(1));
System.out.println("Second saved State: " +
originator.getState());
}
}
Vérifiez la sortie
Current State: State #4
First saved State: State #2
Second saved State: State #3
Avantage et Inconvénient
Avantage Inconvénient