12-11-2009, 09:12 PM
J'utilise régulièrement le singleton pour des objets qui ne peuvent être instanciés plus d'une fois ( c'est la définition même du singleton ), par exemple dans une appli web riche pour laquelle toute l'interface graphique était rendue via un objet javascript, cet objet était déclaré singleton car l'interface graphique ne pouvait être affichée ( et donc instanciée ) plus d'une fois, ça n'aurait pas eu de sens.
Je l'utilise également dans des applications qui sont très centrées sur l'utilisateur connecté. Un petit currentUser::getInstance(), utilisable à tout moment est bien pratique. Ca retourne un objet avec toutes les caractéristiques de l'user. A côté, j'ai une classe user avec les traditionnelles méthodes qui manipulent les users : getUserByxxx, delete, save...
Cette classe est appelée dans le currentUser.
Pour ton problème je verrais bien 2 classes :
- une classe user, avec en attribut toutes les caractéristiques d'un user
- une classe avec, comme attribut, un tableau d'objets $users et qui aurait pour clé l'identifiant des dits users. Et en méthode, tout ce dont t'as besoin pour manipuler tes users mais surtout un getUsers(array $userIds) qui n'envoie la requête que si les identifiants n'existent pas en tant que clé de notre attribut $users. Et dans ce cas, ça ne récupèrerait que les users qui ne sont pas dans le tableau.
J'sais pas si je suis clair, c'est tout simplement une relation de type 1-* entre les deux classes quoi, et ça s'apparente à une factory.
Je l'utilise également dans des applications qui sont très centrées sur l'utilisateur connecté. Un petit currentUser::getInstance(), utilisable à tout moment est bien pratique. Ca retourne un objet avec toutes les caractéristiques de l'user. A côté, j'ai une classe user avec les traditionnelles méthodes qui manipulent les users : getUserByxxx, delete, save...
Cette classe est appelée dans le currentUser.
Pour ton problème je verrais bien 2 classes :
- une classe user, avec en attribut toutes les caractéristiques d'un user
- une classe avec, comme attribut, un tableau d'objets $users et qui aurait pour clé l'identifiant des dits users. Et en méthode, tout ce dont t'as besoin pour manipuler tes users mais surtout un getUsers(array $userIds) qui n'envoie la requête que si les identifiants n'existent pas en tant que clé de notre attribut $users. Et dans ce cas, ça ne récupèrerait que les users qui ne sont pas dans le tableau.
J'sais pas si je suis clair, c'est tout simplement une relation de type 1-* entre les deux classes quoi, et ça s'apparente à une factory.