Mise de côté, pour l'instant, des arguments concernant les vertus et disvirtues relatives du motif Singleton, et considérant qu'un Singleton est généralement considéré comme une instance qui persiste pendant la durée de vie d'une application, Quelle serait la meilleure façon d'avoir un Singleton qui a une vie limitée?Expiration de l'instance Singleton après une période de temps
Y at-il quelque chose de mal avec quelque chose comme ce qui suit:
public class CategoryHandler
{
private static DateTime m_expires;
public bool HasExpired
{
get return DateTime.Now > m_expires;
}
private CategoryHandler()
{
m_expires = DateTime.Now.AddMinutes(60);
}
public static CategoryHandler Instance()
{
if(HasExpired)
{
//Dispose and reconstruct
}
else
{
//Use existing instance
}
}
}
Ou est-il un moyen beaucoup mieux d'aborder ce problème?
Avez-vous besoin d'expirer le singleton en le disposant après 60 minutes, ou juste "la prochaine fois que quelqu'un l'utilisera après 60 minutes"? –
Ce serait la prochaine fois qu'il est utilisé après 60 minutes (ou si longtemps, j'ai choisi 60 minutes juste pour l'exemple). – Jason