Design pattern

Résolu
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 - 4 nov. 2006 à 12:34
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 4 nov. 2006 à 13:01
J'ai preferé ouvrir un nouveau sujet pour le design pattern. Alors si j'ai bien compris, le design pattern stratégie c'est la création d'une classe dont je ne me sert pas directement. Par exemple, j'ai une classe machine :

public class Machine {

/**
 * Represents ...

 *
 */
    private String nomMachine;

/**
 * Represents ...

 *
 */
    private String IP;

/**
 * Represents ...

 *
 */
    private String proc;

/**
 * Represents ...

 *
 */
    private int ram;

/**
 * Represents ...

 *
 */
    private String mdpAdmin;
/**
 *

 *
 *
 * @poseidon-type GestionParcMachine.Systeme
 */
    public java.util.Collection systeme = new java.util.Vector();
/**
 *

 *
 */
    public GestionParcMachine.Service service;

/**
 * Represents ...

 *
 *
 * @return
 */
    public String getNomMachine() {       
        return nomMachine;
    }

/**
 * Represents ...

 *
 *
 * @param _nomMachine
 */
    public void setNomMachine(String _nomMachine) {       
        nomMachine = _nomMachine;
    }

/**
 * Represents ...

 *
 *
 * @return
 */
    public String getIP() {       
        return IP;
    }

/**
 * Represents ...

 *
 *
 * @param _IP
 */
    public void setIP(String _IP) {       
        IP = _IP;
    }

/**
 * Represents ...

 *
 *
 * @return
 */
    public String getProc() {       
        return proc;
    }

/**
 * Represents ...

 *
 *
 * @param _proc
 */
    public void setProc(String _proc) {       
        proc = _proc;
    }

/**
 * Represents ...

 *
 *
 * @return
 */
    public int getRam() {       
        return ram;
    }

/**
 * Represents ...

 *
 *
 * @param _ram
 */
    public void setRam(int _ram) {       
        ram = _ram;
    }

/**
 * Represents ...

 *
 *
 * @return
 */
    public String getMdpAdmin() {       
        return mdpAdmin;
    }

/**
 * Represents ...

 *
 *
 * @param _mdpAdmin
 */
    public void setMdpAdmin(String _mdpAdmin) {       
        mdpAdmin = _mdpAdmin;
    }

/**
 * Does ...

 *
 *
 * @param IP
 * @param nomMachine
 * @param proc
 * @param ram
 * @param mdpAdmin
 */
    public Machine(String nomMachine,String IP,  String proc, int ram, String mdpAdmin) {       
        // your code here
        this.IP = IP;
        this.nomMachine = nomMachine;
        this.proc = proc;
        this.ram = ram;
        this.mdpAdmin = mdpAdmin;
    }

/**
 * Does ...

 *
 *
 * @param _OS
 */

    public void changeService(GestionParcMachine.Service _serv) {       
        this.service = _serv;
    }
/**
 *

 *
 */
    public GestionParcMachine.Gestionnaire gestionnaire;

    /** @poseidon-generated */
    public java.util.Collection getSystemes() {
        return systeme;
    }
    /** @poseidon-generated */
    public void addSysteme(GestionParcMachine.Systeme systeme) {
        if (! this.systeme.contains(systeme)) this.systeme.add(systeme);
    }
    /** @poseidon-generated */
    public void removeSysteme(GestionParcMachine.Systeme systeme) {
        this.systeme.remove(systeme);
    }

    /** @poseidon-generated */
    public GestionParcMachine.Service getService() {
        return service;
    }
    /** @poseidon-generated */
    public void setService(GestionParcMachine.Service service) {
        this.service = service;
    }

    /** @poseidon-generated */
    public GestionParcMachine.Gestionnaire getGestionnaire() {
        return gestionnaire;
    }
    /** @poseidon-generated */
    public void setGestionnaire(GestionParcMachine.Gestionnaire gestionnaire) {
        if (this.gestionnaire != gestionnaire) {
            if (this.gestionnaire != null) this.gestionnaire.removeMachine(this);
            this.gestionnaire = gestionnaire;
            if (gestionnaire != null) gestionnaire.addMachine(this);
        }
    }
 }

Donc, cette classe je ne m'en sers pas, mais je vais me servir de la classe GestionnaireMachine pour utiliser les propriétés de la classe machine. C'est juste une confirmation pour savoir si j'ai bien compris, ou si je suis sur un faux chemin...

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 

1 réponse

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
4 nov. 2006 à 13:01
Le pattern stratégie est utilisé pour :
<li>plusieurs classes différant seulement dans leur comportement,</li><li>vous avez besoin de plusieurs variantes d'un algorithme,</li><li>un algorithme utilise des données que le client ne devrait pas connaître,</li><li>une classe définit plusieurs comportements lesquels nécessitant de nombreux tests conditionnels.</li>

Donc en gros, ca permet de masque l'implémentation d'un algo ou de choisir un algo approprié pour un certain type de problèmes.

Un bon exemple d'utilisation ici (en php, mais ca change rien) :
http://classes.scriptsphp.org/article.Le-design-pattern-Strategy
3
Rejoignez-nous