IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Quel design Pattern


Sujet :

avec Java

  1. #1
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut Quel design Pattern
    Bonjour,

    Je souhaites utiliser un modèle de conception pour une partie de mon code mais je ne sais lequel choisir.

    Par exemple, j'ai un beans Personne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    public class Personne{
     
    	private String id;// Identifiant
    	private String name;// Nom
    	private Adresse adresse;// Adresse
     
     
    	/**
             * Constructeur par défaut
             */
    	public Personne() {
    	}
     
     
    	/**
             * Constructeur permettant de créer une personne
             */
    	public Personne(String Id, String name, Adresse adresse) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.adresse = adresse;
    	}
     
    	/**
             * Renvoie le nom de la personne
             */
    	public String getName() {
    		return name;
    	}
     
    	/**
             * Modifie le nom de la personne
             */
    	public void setName(String name) {
    		this.name = name;
    	}
     
     
    	/**
             * Renvoie l'adresse de la personne
             */
    	public Adresse getAdresse() {
    		return adresse;
    	}
     
    	/**
             * Modifie l'adresse de la personne
             */
    	public void setAdresse(Adresse adresse) {
    		this.adresse = adresse;
    	}
     
    	/**
             * Renvoie l'identifiant de la personne
             */
    	public String getId() {
    		return id;
    	}
     
     
    	/**
             * Modifie l'identifiant de la personne
             */
    	public void setId(String id) {
    		this.id = id;
    	}
    }
    J'aimerai pouvoir implementer SQLData sans toucher le bean Personne.
    Afin d'éviter un couplage entre ma classe métier et la partie dao et avoir la possibilité de modifier le type de persistance plus tard...

    Y a t'il un design pattern qui corresponde à mon besoin. Je suis un peu perdu avec ces modèles de conception et je souhaite faire quelque chose de propre

    Merci pour votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 33
    Points : 39
    Points
    39
    Par défaut
    Je vois pas trop quel design pattern utiliser.
    Je vais peut-être dire une bêtise étant donné que je viens de découvrir ce framework, mais utiliser Hibernate ne serait pas intéressant?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    A partir du moment ou ta couche dao utilise tes objets métier, il y a forcément un couplage (plus ou moins fort) de dao vers métier.

    En effet, les changements des objets métier peuvent impacter la persistance.
    Par contre, les changements coté persistance ne devrait pas impacté les objets métiers. Les objets métiers devraient pouvoir être réutilisables, que la couche persistance existe ou non.

    Afin d'éviter un couplage entre ma classe métier et la partie dao et avoir la possibilité de modifier le type de persistance plus tard...
    Je ne sais pas ce que tu entends par type de persistance.
    Tu parles du choix du SGBD?
    De la techno de persistence (jdbc, hibernate, ibatis...) ?

  4. #4
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Citation Envoyé par thebloodyman Voir le message
    Je ne sais pas ce que tu entends par type de persistance.
    Tu parles du choix du SGBD?
    De la techno de persistence (jdbc, hibernate, ibatis...) ?
    Je parle de technologie de persistance (jDBC, XML, fichier plats,.....)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    D'accord.
    Et l'interface SQLData est censée fournir quels services ?

  6. #6
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    L'interface permet de faire le lien entre mes objets et un UDT (SQL).

    http://java.developpez.com/faq/jdbc/?page=types#udt

    merci pour ton aide

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut orthographe
    Pas de souci, j'aime pas le foot

    Je comprends mieux ton besoin maintenant

    Comme dit plus haut, les changements coté persistance ne devraient pas impacter les objets métier.
    Et les objets métier devraient pouvoir être réutilisables, que la couche persistance existe ou non.

    Tu as bien vu car si Personne implémente l'interface SqlData, la seconde règle ne tient plus et tu te retrouves avec un objet métier couplé à la techno de persistance utilisée.

    Pour résoudre ceci, tu pourrais envelopper ton objet métier Personne dans un objet de persistance de type PersonneSqlData .
    C'est PersonneSqlData qui implémentera SqlData et c'est PersonneSqlData et non l'objet métier que tu utiliseras dans tes services de persistance.
    Ainsi ta classe Personne peut être utilisé indépendamment d'un contexte sql-jdbc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    PersonneSqlData implements SqlData
    {
       private Personne personne;
     
       public PersonneSqlData (Personne personne){
          this.personne=personne;
       }
     
    // implémentations des méthodes de l'interface SqlData qui utiliseront l'objet personne
       public String getSQLTypeName() {
       ...
       }
       ...
    }
    Le pattern utilisé est adaptateur ou wrapper.

  8. #8
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut


    A vrai dire, après lecture d'un gros livre sur les design Pattern, je cherchais quelque chose de plus compliqué alors que la réponse était simple et surtout très efficace

    Avec ce Modèle, c'est nettement plus propre !!!!

    Merci Beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dépendance entre objets : quel design pattern?
    Par zigxag dans le forum Design Patterns
    Réponses: 3
    Dernier message: 13/12/2007, 10h14
  2. Quel Design Pattern choisir?
    Par Aïssa dans le forum Design Patterns
    Réponses: 20
    Dernier message: 24/01/2007, 17h12
  3. Réponses: 9
    Dernier message: 05/12/2006, 10h00
  4. Réponses: 5
    Dernier message: 21/06/2006, 14h47
  5. Quel design pattern pour réaliser une synthèse
    Par jbwan dans le forum Design Patterns
    Réponses: 3
    Dernier message: 21/04/2006, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo