我構建了一個異步任務服務執行程序,它通過外部請求執行任務。強制程序員調用其基地中的方法
每個任務都包含函數void run(),
,因此任何想要向系統添加任務的程序員都需要繼承自BaseTask
。
interface ITask{
void run();
}
abstract BaseTask : ITask{
//force "run()" to set Result
public ResultContainer Result {set; get;}
void run();
}
class SomeTask : BaseTask {
void run(){
////run the operation here, in the end, set the result.
//force the programmer to set the Result;
this.Result = new ResultContainer("task ok");
}
}
由於內部原因,run()
必須是無效的。
有什麼辦法可以強制一個程序員想要添加一個任務來調用Result
在BaseTask
並設置其值? 你認爲這是一個不好的做法?
感謝
您可以與執行添加另一種方法來ITask和BaseTask對onResult()來設置的結果,但不管依託別人做你想讓他們做的事情可能是不可靠:) –
這似乎有關:http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface –