2009-12-24 7 views
2

J'ai une classe Blog qui fait exactement ce que vous pensez ... créer un objet et le gérer. Cette partie est belle et propre.Où stocker les méthodes statiques dans OOP?

J'ai maintenant besoin d'une fonction qui retournera rapidement un certain nombre de tous les blogs dans ma base de données (pas nécessairement liés à l'objet blog). Par conséquent, je pense qu'une méthode statique serait un bon choix.

Ma question est, où dois-je stocker cette méthode statique? Voici quelques options que je peux penser: (peut-être puant parce qu'il n'a rien à voir avec l'objet de cette classe crée)

  • magasin comme une méthode statique dans la classe Blog

  • créer une nouvelle classe pour blog fonctions statiques (semble excessive)

  • trouver une meilleure façon d'aller à ce tout à fait (oui, mais quoi?)

Répondre

1

Vraisemblablement, quelque chose gère les multiples objets Blog que vous créez? Sinon, il devrait y avoir, et c'est là que la méthode appartient - pas besoin d'être statique.

+0

en effet ... mon contrôleur (MVC) le gère ... mais je vais réutiliser le besoin de cette fonction sur plusieurs pages ...d'après ce que j'ai lu, c'est mieux de localiser cette fonctionnalité, n'est-ce pas? – johnnietheblack

+1

Un contrôleur dans une solution MVC (et je pense personnellement que MVC est un pantalon) ne devrait pas avoir de connaissances métier - il doit utiliser un objet de niveau métier pour effectuer le travail, et cet objet de niveau métier doit résider. –

+0

aka, le modèle? désolé ... si ce n'est pas clair ... je suis définitivement entrer dans un nouveau monde pour moi – johnnietheblack

1

Vous COU ld encapsule également l'accès à la base de données dans une classe et y ajoute la nouvelle méthode.

2

Créez une classe/interface appelée BlogService qui comportera la méthode count. D'autres méthodes telles que findAll, findById, etc.

+1

donc cela l'empêcherait d'être statique? – johnnietheblack

+0

Oui. Les membres statiques rendent le code moins orienté objet et difficile à tester unitaire. Par exemple, les méthodes statiques ne peuvent pas être remplacées. –

+0

J'aime cette solution, mais pas en raison de la nature de la statique. La façon dont je code généralement est telle que j'ai une classe 'Service' qui gère plusieurs modèles du même type, et qui s'occupe des opérations sur des groupes de modèles, de sorte que mes classes de modèles représentent un seul objet métier ou entité. Je trouve que le faire de cette façon, me permet d'abstraire facilement toute la «gestion» des objets en tant que groupe, et de laisser le modèle ne traitant que d'un seul objet métier. –

1

trouver une meilleure façon d'aller à ce tout à fait (oui, mais quoi?)

Model View Controller

Transformez votre blog à un 'contrôleur' ​​à ce stade

Créer un 'modèle' pouvant gérer toutes vos méthodes de base de données

De la classe Blog appelez le modèle que vous souhaitez (également suggérer à ce stade refactoriser toutes les demandes de base de données pour aller dans le modèle).

(Pour une très bonne introduction à la recherche MVC pour CodeIgniter).

0

Vous n'avez pas besoin d'une méthode statique, mais d'une variable statique. La méthode statique est juste une fonction dans un objet qui ne prend pas d'objet mais seulement des variables de l'extérieur.

Questions connexes