Factory
&
Builder

 

Jeudi 18 mai 2017

Victor OSTERTAG & Arthur VERVAET

Factory

 

Dans la vrai vie...

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

Java

Créons une voiture à l'aide d'une factory

On possède plusieurs marques

Honda

Renault

Peugeot

new Honda();

new Renault();

new Peugeot();

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");

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 ????();

La Factory

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

Je veux une

Honda !

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();

BUILDER

FACTORY

EMPRUNT

Maison

Voiture

Education

Chacun a des taux différents, des durées différentes, des montants différents, ...

Made with Slides.com