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

正如,Kelly S. French 说你的方法已经足够好了。如果您想在其他类中使用这种方法,最好使用 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 回答