CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[POO] Encapsulation

Pseudo supprimé
Pseudo supprimé 24 avril 2014 à 15:49:49

Bonjour, j'ai une question concernant l'encapsulation (je suis en C++).

J'ai 4 classe qui gère 4 choses différente (ressources, rendu, sons et input). Je souhaite rassembler une instanciation de chacune de ces classes dans une une seule classe.

Qu'est-ce qui serait le mieux pour la maintenance de mon code à long terme:

1- Donner accès directement aux instance avec une simple méthode get (non const).

2- Coder des méthodes qui donneront accès aux méthodes des instances qu'elle encapsule.

Si vous avez besoin de plus de précisions, je suis là :)
Merci ! :-)

polaris_mov
polaris_mov
Niveau 2
24 avril 2014 à 16:30:21

Une classe fourre-tout, en somme? N'est-il pas plus simple d'utiliser les singletons? Ça aurait la même utilité, sans une couche supplémentaire.
Mais pour répondre à ta question => 1

Bunyan
Bunyan
Niveau 17
24 avril 2014 à 16:34:06

Les deux sont possibles, ça dépend si tu veux un wrapper obfuscant (choix 2) ou non (choix 1).

Soit on ne peut accéder à tes ressources que via un seul point d'entrée et celles-ci sont gérées par ce point, soit tes ressources peuvent être gérées directement et autant les mettre en singleton car je ne vois pas l'utilité d'un wrapper dans ce cas-là.

Odvie
Odvie
Niveau 10
25 avril 2014 à 22:17:57

Les singletons c'est le mal :diable:

J'exagère, mais c'est la solution passe-partout qui a quand même pas mal de défauts d'un point de vue conception :hap:

Utilise plutôt des classes "manager" pour chaque classe dont tu parles, qui contiennent et fournissent les instances quand on veut les utiliser :hap:

Bunyan
Bunyan
Niveau 17
26 avril 2014 à 00:32:05

Pourrais-tu t'étendre sur les singletons s'il te plaît ?
Tu es le premier avis de ce genre que je croise (à ma décharge, je ne me renseigne pas des masses sur les design patterns).

Les "manager" que tu préconises sont soit des Wrapper (déjà discuté), soit des Factory. Dans le contexte présenté, je vois mal l'utilité d'une Factory.

Odvie
Odvie
Niveau 10
26 avril 2014 à 09:48:25

http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons :hap:

Bunyan
Bunyan
Niveau 17
26 avril 2014 à 10:10:22

Merci.
Le problème est donc la sur-utilisation ou la mauvaise utilisation du pattern que le pattern lui-même pour généralement réaliser des pseudo-classes fourre-tout qui font office de variables globales.

Comme le dit la seconde meilleure réponse : "If you have some resource that (1) can only have a single instance, and (2) you need to manage that single instance, you need a singleton.".
Sinon, pas de singleton.

C'est plus un problème d'architecture qu'un problème avec le pattern lui-même en somme (bon, je ne vais pas jeter la pierre, quand j'explique certains sujets, je dis explicitement que certaines choses facilement détournables n'existent pas pour éviter les conneries, je pense notamment au StrictMode d'Android).

Pseudo supprimé
Pseudo supprimé 29 avril 2014 à 21:18:15

Salut, merci pour vos réponses ! Désolé si je ne suis pas revenu avant. :o))

Je souhaiterais éviter d'utiliser les singletons surtout que je n'en vois pas trop l'utilité dans ce cas-ci.

Ma classe Managers est surtout utilisé pour éviter de me trimballer les 4 instances séparément, pour me permettre de les instancier d'un coup et de charger leurs configuration d'un coup. :(

Mais je crois bien que je vais laisser un accès direct, ce sera plus simple :p)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment