Guten Abend, Ich versuche, SOLID-Prinzip mit DI zum ersten Mal in einem mittelgroßen Projekt zu implementieren. Die meiste Zeit verstehe ich, aber jetzt habe ich ein Problem. Lassen Sie mich ein armes Beispiel nehmen, aber es zeigt die Struktur der App. Ich habe Klassen mit verschiedenen Konstruktoren geerbt (Code unten angegeben). Wenn ich eine Instanz brauche, kenne ich die Klasse, die ich brauche. So, 2 Fragen zu diesem Code: 1/Muss ich in diesem Fall die Schnittstelle verwenden, um SOLID principe zu erreichen (oder einfach eine Instanz von ClassA wie ClassA exeplele = new ClassA ("text") in Program.cs) 2/Ist es gut gemacht? (Was ist gut/was ist schlecht, was zu tun/was zu vermeiden?)Schnittstellen und vererbte Klassen
class Program
{
static void Main(string[] args)
{
IFactory exemple = new Factory();
//With Unity--> exemple=Resolve<IFactory>();
exemple.GetTextClassA("test");
exemple.GetTextClassB(1);
Console.ReadLine();
}
}
public interface IFactory
{
ClassA GetTextClassA(string text);
ClassB GetTextClassB(int text);
}
public class Factory : IFactory
{
public ClassA GetTextClassA(string text)
{
return new ClassA(text);
}
public ClassB GetTextClassB(int text)
{
return new ClassB(text);
}
}
public abstract class MainClass
{
private string _text;
public MainClass(){}
protected abstract string GetText();
protected virtual void Initialize()
{
_text = GetText();
Console.WriteLine(_text);
}
public string TextToDisplay
{
get { return _text; }
}
}
public class ClassA : MainClass
{
string _textA;
public ClassA(string textParam)
{
_textA = textParam;
base.Initialize();
}
protected override string GetText()
{
return "Text is :"+_textA;
}
}
public class ClassB : MainClass
{
int _numParam;
public ClassB(int numParam)
{
_numParam = numParam;
base.Initialize();
}
protected override string GetText()
{
return "Text is :" + _numParam.ToString();
}
}
Vielen Dank für Ihre Kommentare.
Was ist Ihr konkretes Problem? Sie programmieren ein Modell nach einem Muster/Prinzip, wenn Sie ein bestimmtes Ziel erreichen wollen. Was ist dein Ziel? Wenn Sie diesen Weg nicht gehen, um dies zu wissen, sollten wir nicht über Probleme philosophieren, die derzeit nicht existieren. – Bagerfahrer
Ich hatte Probleme bei der Pflege/Weiterentwicklung meines vorherigen Projekts. Ich beginne ein neues und ich beschloss, so nah wie möglich an guten Praktiken zu sein. Ich lese überall viel. In meinem Fall (speziell bei vererbten Klassen) möchte ich ein Maximum entkoppeln. Und ich weiß nicht, wie ich das erreichen soll. – Gadsweb