Jeudi 18 mai 2017
Victor OSTERTAG & Arthur VERVAET
On fournit une matière première
Main d'oeuvre
et machines
Un produit final
des paramètres
une méthode d'instantiation
Un objet précis
On possède plusieurs marques
Honda
Renault
Peugeot
new Honda();
new Renault();
new Peugeot();
class CarFactory{
public function CarFactory(String marque){
if(marque.equals("honda"){
return new Honda();
}else if(marque.equals("renault")){
return new Renault();
}else if(marque.equals("peugeot")){
return new Peugeot();
}
}
}
CarFactory car = new CarFactory("honda");
Je veux créer un jeu, j'ai 3 types d'ennemis différents
Zergling
Hydralisk
Ultralisk
Qui vont apparaître aléatoirement sur une carte
On ne sait pas la classe d'avance...
Zergling zerg = new Zergling();
???? zerg = new ????();
class ZergFactory{
public function ZergFactory(float random){
if(random < 0.33){
return new Zergling();
}else if(random < 0.66){
return new Ultralisk();
}else{
return new Hydralisk();
}
}
}
ZergFactory zerg = new ZergFactory(Math.random());
Je veux une
Honda !
Expert en peinture
Expert en carrosserie
Expert en pneu
Avec un builder, je vais avoir le "squelette" de la voiture.
class CarBuilder{
private String couleur;
private String typeCarrosserie;
private String typePneu;
public function build(){
return new Car(this);
}
public void setCouleur(String couleur){
this.couleur = couleur;
}
public void setTypeCarrosserie(String TypeCarrosserie){
this.typeCarrosserie = typeCarrosserie;
}
public void setTypePneu(String TypePneu){
this.typePneu = typePneu;
}
}
CarFactory car = new CarFactory().setCouleur("bleu").build();
EMPRUNT
Maison
Voiture
Education
Chacun a des taux différents, des durées différentes, des montants différents, ...