幕后故事:
所以我想回答这个问题,我不知道该怎么做。我想也许这里的人有很好的学习资源,或者可能给出一个明确的答案。
简言之,我想知道在标准C OOP编程中什么在性能上更好,什么是更好的实践。
问题:
是更好地连接到一个事件,还是更好地让消费者注入一个可以用结果调用的操作?
例子:
例如,我正在构建一个搜索面板。我的面板应该非常擅长搜索,但并不真正关心它的结果是如何使用的。
所以我的两个选项是,在我的视图模型中创建一个已完成的事件,并从关注结果的地方连接到它,或者第二个选项,允许调用者插入一个回调操作,当搜索完成时将调用该操作。
我最初的想法是至少它们是相等的,因为事件和操作都应该是一个被调用的函数引用指针。不过,我可以看到,泡沫事件的性能较低。
示例代码:
public class Consumer{
public Consumer(){
StandardViewModel viewModel = new StandardViewModel(CompletedCallback);
viewModel.customEvent += someEventHandler;
}
public void someEventHandler(Object sender, EventArgs args){
// do something with results
}
public void CompletedCallback(List<string> results){
// do something with results
}
}
public class StandardViewModel{
public event EventHandler customEvent;
private Action<IEnumerable<string> _callback;
public StandardViewModel(Action<IEnumerable<string>> callback){
_callback = callback;
}
}