Factory
&
Builder
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3718126/7bb22c301aa781d21c0a0f7543fa22b7_big-image-png-factory-clipart-png_2086-2400.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3801817/worker.png)
Jeudi 18 mai 2017
Victor OSTERTAG & Arthur VERVAET
Factory
Dans la vrai vie...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3801884/9.png)
On fournit une matière première
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3801904/work-icon-informatique-musique-cinma-2.png)
Main d'oeuvre
et machines
Un produit final
des paramètres
une méthode d'instantiation
Un objet précis
Java
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3801952/java_coffee_cup_logo1600.png)
Créons une voiture à l'aide d'une factory
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814835/2016-honda-civic-lx-coupe-angular-front.png)
On possède plusieurs marques
Honda
Renault
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814853/renault_15espaceintensefw5b_angularfront.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814862/V3DImage.png)
Peugeot
new Honda();
new Renault();
new Peugeot();
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3718126/7bb22c301aa781d21c0a0f7543fa22b7_big-image-png-factory-clipart-png_2086-2400.png)
La Factory
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");
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814835/2016-honda-civic-lx-coupe-angular-front.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814853/renault_15espaceintensefw5b_angularfront.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814862/V3DImage.png)
Je veux créer un jeu, j'ai 3 types d'ennemis différents
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815016/zerg.png)
Zergling
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815018/hydralisk.png)
Hydralisk
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815017/ultra.png)
Ultralisk
Qui vont apparaître aléatoirement sur une carte
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815029/omega_tactics___game_concept_art__map__by_zenzorith-d6sw46m.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815016/zerg.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815018/hydralisk.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815017/ultra.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815016/zerg.png)
On ne sait pas la classe d'avance...
Zergling zerg = new Zergling();
???? zerg = new ????();
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3718126/7bb22c301aa781d21c0a0f7543fa22b7_big-image-png-factory-clipart-png_2086-2400.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815067/PNGPIX-COM-Superman-PNG-Transparent-Image-2.png)
La Factory
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815081/6ip5jKX5T.png)
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());
Builder
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815104/Chat-bubble_icon-icons.com_52193.png)
Je veux une
Honda !
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3718126/7bb22c301aa781d21c0a0f7543fa22b7_big-image-png-factory-clipart-png_2086-2400.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3814835/2016-honda-civic-lx-coupe-angular-front.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/2767004/loupe_PNG10030.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815110/e0143831ecb3dbc54c04fa0e9a2f227d_vault-boy-engineer-engineer-clipart-png_266-276.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815110/e0143831ecb3dbc54c04fa0e9a2f227d_vault-boy-engineer-engineer-clipart-png_266-276.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815110/e0143831ecb3dbc54c04fa0e9a2f227d_vault-boy-engineer-engineer-clipart-png_266-276.png)
Expert en peinture
Expert en carrosserie
Expert en pneu
Avec un builder, je vais avoir le "squelette" de la voiture.
Exemple
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();
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815138/VS.png)
BUILDER
FACTORY
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815160/Lightning-High-Quality-PNG.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815166/contract.png)
EMPRUNT
Maison
Voiture
Education
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815174/aiqe7GxyT.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815175/description-crystal-project-folder-home-8.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3815176/education-png-3.png)
Chacun a des taux différents, des durées différentes, des montants différents, ...
Factory & Builder
By isvoli
Factory & Builder
- 950