Envoyé par
the Hound
Sinon, comme tu le dis, il y a là un problème de design, mais la solution que tu proposes n'est en soi pas une solution. En effet, admettons qu'on implémente une classe Hub qui n'est pas destinée à fournir un singleton : il faudra instancier cette classe au moins une fois, et passer l'instance de cette classe à tous les Manager. Or c'est précisément là le problème : comment passer un objet à "plein d'" instances de Manager de manière efficace ? Qu'on passe un objet de type Hub ou Display, c'est le même problème. Tu remarqueras d'ailleurs que si, sémantiquement, Application est "faite" pour contenir un objet de type Display, alors la classe Application correspond à peu près à la classe Hub que tu proposes. Remarque par ailleurs, le fait de passer des références (en tous genre) de Display à des instances d'une autre classe ne viole pas le SRP, puisque cela n'empêche pas les différentes classes de traiter les tâches pour lesquelles elles sont faites. Quand une fonction membre de Manager appelle _display->toto(), c'est bien la classe Display qui encapsule cette action, et non pas Manager.
Partager