Ich mache eine C# -Anwendung. Die Anwendung hat zwei Klassen und mehrere Methoden. Beim Schreiben des Codes bin ich auf ein Problem gestoßen. Ich benutze die gleichen zwei Variablen (XList und YList) und eine Methode in beiden Klassen. Und wahrscheinlich brauche ich mehr Klassen mit diesem Code. Also habe ich ein Duplikationsproblem erstellt. Im Folgenden ist eine einfache Version von meinem Code:Wie vermeidet man Doppelarbeit?
public class A {
private testEntities db = new testEntities();
public List<int> XList = new List<int>();
public List<int> YList = new List<int>();
public void GetAllInfo()
{
// Get the data from a database and add to a list
XList = db.Table1.ToList();
YList = db.Table2.ToList();
}
public void DoStuff()
{
// Do Stuff with XList and YList
}
}
public class B {
private testEntities db = new testEntities();
public List<int> XList = new List<int>();
public List<int> YList = new List<int>();
public void GetAllInfo()
{
// Get the data from a database and add to a list (the same as in class A)
XList = db.Table1.ToList();
YList = db.Table2.ToList();
}
public void DoDifferentStuff()
{
// Do ddifferent stuff with XList and YList then in class A
}
}
Meine Frage ist, was der beste Weg ist, diese Vervielfältigung Problem zu lösen?
Nach einigen Recherchen fand ich, dass ich das wahrscheinlich mit Vererbung oder Zusammensetzung lösen kann. Ich habe auch gelesen, dass die Leute die Komposition über die Vererbung wählen. Also schrieb ich den folgenden Code, um die Vervielfältigung zu lösen:
public class DataPreparation
{
private testEntities db = new testEntities();
public List<int> XList = new List<int>();
public List<int> YList = new List<int>();
public void GetAllInfo()
{
// Get the data from a database and add to a list
XList = db.Table1.ToList();
YList = db.Table2.ToList();
}
// Implement other methods
}
public class A
{
public void MethodName()
{
DataPreparation dataPreparation = new DataPreparation();
dataPreparation.GetAllInfo();
UseDataX(dataPreparation.XList);
UseDataY(dataPreparation.YList);
// Implementation UseDataX() and UseDataY()
}
}
public class B
{
public void MethodName()
{
DataPreparation dataPreparation = new DataPreparation();
dataPreparation.GetAllInfo();
VisualizeDataX(dataPreparation.XList);
VisualizeDataY(dataPreparation.YList);
// Implementation VisualizeDataX() and VisualizeDataY()
}
}
Wie man sehen kann ich eine Klasse aus, die die Daten aus der Datenbank immer behandelt. Und dass die Klasse A und B die DataPreparation-Klasse verwenden. Aber ist das der beste Weg, um die Duplizierung zu lösen? Oder sollte ich Vererbung oder etwas anderes verwenden?
Startpunkt: Wie planen Sie, Ihre Methoden zu testen? – tym32167