我需要对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的新类并使用该类来执行此检查并等待?
提前感谢您的回复。
答案 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();
}
}