理論的に考える

例)
欠陥数を取得したい。

//欠陥情報
class DetectInfo
{
  public int 欠陥No
  public int 欠陥名称
  public Color 分類色
}


class Working()
{
  DetectInfo[] d_infos;

  public void Working()
  {
    d_infos = 欠陥情報取得();

    //発生欠陥をカウントアップクラスの生成、初期化
    DetectCountUpper dc_upper = new DetectCountUpper();
    dc_upper.setDetectCount(d_infos.Length);  //欠陥種類数
    dc_upper.startWorkThread(); //別スレッドにてカウントアップ処理
  }

  //カウントアップ処理にて、1処理が完了したときに発生するイベント
  public void dc_upper_ProcessUnitComplete(object sender, EventArgs e)
  {
      /*
       *欠陥数はCountUpperからもらう。d_infos.Lengthからもらっても現在は同じ結果になる。
       *しかし、表示する値はCountUpperが生成したものだから、生成したクラスから
       *欠陥数をもらうと理論的に筋が通る => 変更に強い!!!
       */
      int d_cnt = dc_upper.getDetectCount();
       
      for(int i=0;i<d_cnt;i++)
      {
         //表示処理
      }
   }
}