2

OODについての提案が必要です。以下は私の状況です。

Class A{
   private B service_;
   private StopWatch timer_;       
   private Const int MinTimeToWait;

   public SomeOperation(){
        timer_.start();
       //call another method on service_ async and subsribe to event for callback
   }

   private SomeOperationCallback()
   {
         timer_.stop();
         int elapsedTime = timer_.elapsedTime();
         if(elapsedTime < MinTimeToWait)
             Thread.sleep(MinTimeToWait - elapsedTime)

         //Continue after thread resumes
   } 

}

非同期操作を起動するクラスがあり、非同期操作が返された後、非同期操作が MinTimeToWait 未満で返されたかどうかを確認する必要があります。そうであれば、MinTimeToWait が完了するのを待ってから、他の操作に進みます。

今、時間をチェックして SomeOperationCallback で待機するロジックを含めることで正しいことを行っていますか、またはロジックと StopWatch をカプセル化する新しいクラスを作成し、そのクラスを使用してこのチェックと待機を行う必要がありますか?

返信ありがとうございます。

4

2 に答える 2

1

あなたのアプローチに問題はありません。この問題は、「A」、おそらく「MinWaitProcess」という名前のように見えます。その責任は、プロセスが最小限の時間待機することを保証することです。

さて、時間をチェックしてSomeOperationCallbackに待機するロジックを含めることで正しいことをしていますか、それともロジックとStopWatchをカプセル化する新しいクラスを作成し、そのクラスを使用してこのチェックと待機を行う必要がありますか?

そうすれば、クラスAの場合と同じように見えると思います。

于 2013-02-12T17:40:14.147 に答える
0

ように、ケリー S. フレンチはあなたのアプローチで十分だと言いました。このアプローチを他のクラスで使用する場合は、メソッド SomeOperation() および OperationCallbackを使用して基本クラスを定義することをお勧めします。その後、基本クラスから継承し、スーパークラス メソッドを呼び出すことで再利用性を実現できます。そんな感じ:

Class Base {

     private B service_;
     private StopWatch timer_;       
     private Const int MinTimeToWait;

     public SomeOperation(){
        timer_.start();
     }

     protected SomeOperationCallback()
     {
         timer_.stop();
         int elapsedTime = timer_.elapsedTime();
         if(elapsedTime < MinTimeToWait)
             Thread.sleep(MinTimeToWait - elapsedTime)
         } 

     }
}
class A:Base {
    SomeOperation() {
        super.SomeOperation();
        // do some actions here
        super.SomeOperationCallback();
    }
}
于 2014-07-14T12:51:14.760 に答える