面向对象的设计需要建议

时间:2013-02-12 16:42:15

标签: oop object-oriented-analysis

我需要对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
   } 

}

我有一个触发异步操作的类,在异步操作返回后,我需要检查asycn操作是否返回小于MinTimeToWait,如果是,则等待MinTimeToWait完成,然后继续其他操作。

现在,通过包含检查时间和在SomeOperationCallback中等待的逻辑来做正确的事情,或者我应该创建一个封装逻辑和StopWatch的新类并使用该类来执行此检查并等待?

提前感谢您的回复。

2 个答案:

答案 0 :(得分:1)

我认为您的方法没有任何问题。问题看起来更像是'A',也许是'MinWaitProcess'。它的职责是确保一个过程等待最短的时间。

  

现在,通过包含检查的逻辑来做正确的事情   在SomeOperationCallback中等待并等待,或者我应该创建一个新的   封装逻辑和StopWatch并使用该类的类   做这个检查并等待?

如果你这样做,我怀疑它看起来就像你在A级那样。

答案 1 :(得分:0)

As,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();
    }
}