2010-11-10 23 views
0

J'ai une classe d'usine qui je me sens doit être re pris en compte, prendre l'exemple suivant:Gestion des dépendances externes dans une usine

public class FileFactory 
{ 
    public static FileType Create(string fileName) 
    { 
     if(IsImageFile(fileName))  
     { 
      return new ImageFileType(); 
     } 
     else if(IsDocumentFile(fileName)) 
     { 
      return new DocumentFileType(); 
     } 
     ... 
    } 

    private static bool IsImageFile(string fileName) 
    { 
     string imageFileTypes[] = string[] {".jpg", ".gif", ".png"}; //How to avoid this line of code? 
     return imageFileTypes.Contains(fileName); 
    } 
} 

que je suis vaguement directeurs d'Domain Driven Design et donc cette classe FileFactory est un objet de domaine. La classe factory doit-elle accéder au référentiel/DB pour obtenir les types de fichiers?

Comment devrais-je gérer la dépendance dans ce scénario?

Répondre

0

Un nouveau type de fichier image inconnu est vraiment improbable. C'est bien de coder ceci dur.

Si vous souhaitez réellement conserver cette liste de fichiers en tant que dépendance externe, passez la liste des types de fichiers dans le constructeur FileFactory et attribuez à Create() une méthode d'instance au lieu de static. Cela vous permettra de rester testable et solide.