2009-10-27 8 views
2

Je veux savoir lequel est préféré lors du codage pour utiliser des méthodes statiques ou des instances normales, je préfère utiliser statique si elles étaient peu nombreuses mais si elles étaient nombreuses, je commence pour obtenir des doutesMéthodes statiques (partagées dans VB.NET) ou normales

Ex

EmployeeCollection EmpLst = EmployeeManager.GetAllEmployees(); 

Ou

EmployeeManager EmpMgr = new EmployeeManager(); 
EmployeeCollection EmpLst = EmpMgr.GetAllEmployees(); 

si le EmployeeManager a de nombreuses méthodes (mises à jour supprime sélectionne) est-il autorisé à les rendre tout statique.

et s'il s'agissait d'une instance normale. ne serait pas un inconvénient si l'objet est lancé à chaque fois spécialement si GetAllEmployees() est fortement utilisé.

Quelle est la meilleure approche à utiliser?

+0

Vérifiez les sujets suivants: http://stackoverflow.com/questions/596367/static-methods-vs-instance-methods-in-c, http://stackoverflow.com/questions/202631/performance-of-using -static-méthodes-vs-instantiating-the-class-containing-the-met – Groo

Répondre

3

Si vous avez beaucoup de méthodes statiques, alors je suppose que vous ne suivez pas les principes de la POO. Les méthodes statiques sont utiles comme méthodes d'usine ou comme méthodes auxiliaires. Mais j'éviterais de construire la conception de l'application au-dessus d'eux.

+0

mais dans l'application ASP.NET, l'objet est éliminé à chaque fois que la demande est terminée et envoyée. donc je dois initier l'objet chaque fois que je veux appeler la méthode, ne serait pas un inconvénient? – Kronass

+2

Tout d'abord, vous devez vous soucier de la conception, pas de la performance. Après avoir bien conçu, vous pouvez vérifier si la performance est acceptable et si ce n'est pas le cas, alors seulement vous pouvez commencer à envisager des méthodes statiques ou d'autres approches. –

+0

Merci beaucoup c'était très utile – Kronass

1

Vous voudrez peut-être jeter un coup d'œil aux modèles d'usine et de singleton, qui sont des modèles de création conçus pour ce genre de choses. Pour votre problème, je suggère d'utiliser un singleton, qui impose une création unique de l'objet.

Abstract Factory

Singleton

(Liens vers dofactory.com)

+1

À mon humble avis, singletons sont fortement dépassés ... –

+0

Souciez-vous d'élaborer sur cela? – Dominiek

+0

Eh bien, quel est l'avantage d'un singleton? Oui, vous pouvez créer un singleton au-dessus d'une classe dérivée, mais tout ça, n'est-ce pas? La seule autre différence entre un singleton et une classe statique est que vous avez le surcoût d'accès à la propriété Instance pour les singletons. –

0

Dans le cas de votre méthode GetEmployee, je resterais avec statique.

J'utilise normalement static si la méthode n'a besoin d'accéder à aucun état d'instance et méthode d'instance si nécessaire. Donc, je n'utilise pas de méthodes d'instance si la méthode n'a pas besoin d'un état d'instance.

Questions connexes