Lorsque mon application démarre, elle doit obtenir une instance de la classe DAL correcte (actuellement 4) en fonction de l'utilisateur connecté. Certains utilisateurs tirent certaines bases de données.Est-il toujours considéré comme une usine si les objets retournés par l'usine sont statiques?
Est-ce encore considéré comme un modèle "d'usine" si au lieu d'instancier des instances de ces classes DAL, je renvoie simplement l'instance statique correcte de celui-ci? Je n'ai pas besoin de créer continuellement ces objets puisque tous les utilisateurs peuvent les partager.
psuedocode:
public class RepositoryFactory
{
public static IRepository repoA = new FranksLumberRepo();
public static IRepository repoB = new LowesHardwareRepo();
public static IRepository repoC = new HackmansHardwareRepo();
public static IRepository repoD = new TomsHardwareRepo();
public IRepository createRepo(User currentUser)
{
switch(User.Store)
{
case FrankLumber:
return repoA;
case LowesHardware:
return repoB;
case Hackmans:
return repoC;
case TomsHardware:
return repoD;
default:
throw exception;
}
}
}
Ceci est un bon exemple d'utilisation d'un motif Usine abstraite. –
Après avoir lu la page Wikipedias sur Abstract Factory Pattern, il semblerait qu'une Usine abstraite soit utilisée pour renvoyer une sous-fabrique elle-même, qui peut ensuite être utilisée pour instancier des objets. Ce n'est pas le cas avec le code ci-dessus, non? – mmcdole
Il n'y a aucune AbstractFactory dans l'exemple. Où est l'abstrait et où est la fabrique de béton? – TimW