私はC#アプリケーションを作っています。アプリケーションには2つのクラスと複数のメソッドがあります。コードを書いている間、私は問題を見つけました。私は同じ2つの変数(XListとYList)と両方のクラスで1つのメソッドを使用します。おそらく私はこのコードでもっとクラスを必要とします。だから私は重複の問題を作りました。以下は私のコードの簡単なバージョンです:重複を避けるにはどうすればいいですか?
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
}
}
私はこの重複の問題を解決する最良の方法は何ですか?
いくつかの調査の後、私はおそらく継承または構成でこれを解決できることがわかりました。私はまた、人々は相続よりも組成を選択することを読んでいます。あなたは私がデータベースからデータを取得し処理するクラスを作っ見ることができるように
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()
}
}
:だから私は、重複を解決するために、次のコードを書きました。クラスAとクラスBはDataPreparationクラスを使用します。 これは重複を解決する最善の方法ですか?または私は相続または別の何かを使うべきですか?
開始点:どのようにあなたのメソッドをテストする予定ですか? – tym32167