Dein Code Beispiel entspricht nicht dem Sinn einer Factory; daher vermutlich das Verständnisproblem.
Wie witte schon gesagt hat, gibt es bei Factories verschiedene Stufen; alle zusammen verfolgen aber den Sinn die Instanziierung abstrakt umzusetzen.
Die am meisten verbreiteten Varianten sind die Vererbung- und die Typ-Implementierung:
Vererbung
C#-Code: |
namespace MyCSharp
{
public interface IFahrzeug { }
public abstract class FahrzeugFactory
{
public abstract IFahrzeug GetFahrzeug();
}
public class Auto : IFahrzeug { }
public class AutoFactory : FahrzeugFactory
{
public override IFahrzeug GetFahrzeug() => new Auto();
}
}
|
Typ
Wenn also jemand ein Fahrzeug braucht und die konkrete Implementierung egal ist, dann gibt es absolut null Abhängigkeit a) zum Typ und b) zur Erzeugung.
C#-Code: |
namespace MyCSharp
{
public interface IStockTickerSymbolService
{
Task<SymbolData> GetSymbolData(string symbol);
}
public class ComdirectStockTickerOptions
{
public string SymbolUrl = "https:
}
public class YahooStockTickerSymbolService : IStockTickerSymbolService
{
public YahooStockTickerSymbolService(IOptions<YahooStockTickerOptions> optionsAccessor)
}
public class ComdirectStockTickerSymbolService : IStockTickerSymbolService
{
public ComdirectStockTickerSymbolService(IOptions<ComdirectStockTickerOptions> optionsAccessor)
}
}
|
Beispiel aus:
Mit welchem Pattern kann ich generische Links zu versch. (Finanz)Websites herstellen?
Haste aber sicher schon bei Deiner entsprechenden Suche als 4. Treffer (3 Wochen alt) hier im Forum entdeckt.
Im anderen weit verbreiteten Fall hat man die Information, was man erzeugen will, aber nicht das Wissen, um es selbst zu erzeugen (hier die Optionen).
Im Falle von einem Stockticker will ich zB. Informatioinen über eine Aktie haben, die prinzipiell bei jeder API identisch im Format zu haben sind; die API wird aber unterschiedliche angesprochen.
Brauchst dann quasi nur noch die Implementierung, dass Du anhand zB. eines Enum die Instanz von Yahoo oder eben ComDirect bekommst.
Das siehst Du im Beispiel des 5. Treffers aus Deiner sicherlich durchgeführten Forensuche
Tipp zur Implementierung auswählbarer Hardware API (static class methoden auswählbar)