Je suis d'accord avec Mitch, mais parfois il y a plus.
A L'approche de l'usine peut rendre votre code plus propre, plus facile à utiliser et à entretenir. À certains égards, ils ne sont pas beaucoup plus que des constructeurs glorifiés, mais ils vous donnent une flexibilité supplémentaire.
- Les méthodes d'usine peuvent recevoir des noms correspondant à leur utilisation.
- Les appelants doivent uniquement fournir les paramètres requis. Certes, vous pouvez aussi le faire pour les constructeurs 'normaux' mais il est plus clair pour l'appelant pourquoi il devrait utiliser un constructeur donné s'il a aussi un nom approprié.
- Le déplacement de tout le code complexe hors des constructeurs facilite la maintenance de votre code.
- L'utilisation d'une Usine complète (une qui renvoie une classe/interface abstraite) vous donne une certaine abstraction de la classe concrète elle-même.
Exemples:
// Typlical constructor
public Page(pageId, title, url, keywords, content, tags, lastModified, lastModifiedBy)
{
// All values are set via the constructor.
//...
}
Méthodes d'usine:
public static Page PageByID(pageId)
{
// All properties are set internally here
//(directly or delegated as appropriate).
//...
}
public static Page NewPage(title, url)
{
// All properties not passed in are given
// appropriate default values.
//...
}
public static Page Page404()
{
// All properties are given
// appropriate default values.
//...
}
Kim, il est inapproprié de rediriger la conversation vers votre blog comme ceci. Si vous voulez poser une question, demandez-la ici, s'il vous plaît. –