0

私はこのような3つのクラスを持っています:

class MainClass
{
   public Status status1;
   public Control control1;
}

class Status
{
   MainClass mainClass;
   public void testStatus()
   {
      mainClass.control1.testControl();
   }
}

class Control
{
   public void testControl()
   {
   }
}

「mainClass.control1.testControl()」という行が正しい仕事なのか、OOP の世界で汚い仕事なのかわかりません。それが良くない場合、そのような状況の解決策は何ですか。

4

5 に答える 5

0

兄弟コントロールへのアクセスをどの程度制限したいかによって異なります。

おそらく、テストしたいコントロールのインデックスを取得するメソッドがありますか?

bool TestControl(int index)
{
    return controls[0].TestControl();
}
于 2013-10-17T10:23:04.420 に答える
0

あなたはここで多くの情報を提供していませんが、あなたが持っているコードは良くないと疑うのは正しいです。原因はカップリング。クラスを相互に大きく依存させ、それらの間で相互参照を行っていますが、これは悪いことです。

これを解決するには、次のようなインターフェイスを使用することをお勧めします。

public interface IStatus
{
    void TestStatus();
}

public interface Control
{
    void testControl();
}

public interface IMainClass {}

internal class MainClass : IMainClass
{
    public IStatus status1;
    public IControl control1;
}

internal class Status : IStatus
{
    public IMainClass mainClass;

    public void testStatus()
    {
        mainClass.control1.testControl();
    }
}

internal class Control : IControl
{
    public void testControl()
    {
    }
}
于 2013-10-17T10:37:59.033 に答える