2012-04-05 5 views

Antwort

3

Es gibt ein paar Varianten von Fabrikentwürfen: abstrakte Fabrik, Fabrikmethode, etc ... Da Sie an einem realen Beispiel interessiert sind, dachte ich, ich würde teilen, was ich tat.

Als Beispiel verwendete ich eine Datenzugriffsfactory, um eine konkrete Instanz einer Datenzugriffsklasse zurückzugeben. Die logische Klasse weiß nicht, welche Datenbank verwendet wird. Es fragt einfach die Factory nach einer Datenklasse und verwendet dann diese Datenklasse.

Dies ist die Methode innerhalb meiner DataAccessFactory-Klasse. Es ist verantwortlich für BEMESSENDE die Datenklasse zu verwenden, und es an den Aufrufer zurückkehrt:

public static T GetDataInterface<T>() where T : class 
{ 
    Assembly assembly = Assembly.GetExecutingAssembly(); 

    T theObject = (from t in assembly.GetTypes() 
        where t.GetInterfaces().Contains(typeof(T)) 
        && t.GetConstructor(Type.EmptyTypes) != null 
        && t.Namespace == _namespace 
        select Activator.CreateInstance(t) as T).FirstOrDefault() as T; 

    return theObject as T; 
} 

Und das ist, wie einer meiner Business-Logik-Klassen eine DAL Anfrage macht:

return DataAccessFactory.GetDataInterface<IApplicationData>().GetAll(); 

Die Business-Logik ist vollständig von der Datenzugriffsschicht entkoppelt. Ich hoffe, das hilft.

1

Da Ihre Frage ist sehr allgemein nur einige Links zu den Themen mit Beispielen etc .:

Das Muster verwendet wird, im .NET Framework - zum Beispiel mit WebRequest.

+1

Es ist nicht * wirklich * extrem allgemein - ich frage nach einem realistischen Beispiel dafür, wo das Factory-Design-Muster verwendet werden kann. Wie fortgeschritten oder in welcher Weise das Beispiel des Fabrikdesignmusters ist, liegt im Ermessen desjenigen, der sich entscheidet, meine Frage zu beantworten - es wäre gut, eine Reihe von Beispielen zu sehen. +1 für deine Antwort, danke für die Links, ich lese sie jetzt. – SkonJeet

+1

@SkonJeet Sie sind willkommen :-) hinzugefügt ein Beispiel aus dem .NET-Framework ... – Yahia

+0

Nochmals vielen Dank ... – SkonJeet

Verwandte Themen