【发布时间】:2018-07-11 15:02:05
【问题描述】:
有没有一种方法可以减少这个样板代码而不会太聪明?
我有一堆这样的事件回调:
HandleFooFinished() {
FooFinished = true;
}
HandleBarFinished() {
BarFinished = true;
}
我可以使用 lambdas 将它们连接起来以减少回调代码,除了我需要引用处理程序来取消订阅,就像这样。
SubscribeToEvents() {
GameState.Subscribe("OnFooFinished", HandleFooFinished);
GameState.Subscribe("OnBarFinished", HandleBarFinished);
}
UnsubscribeToEvents() {
GameState.Unsubscribe("OnFooFinished", HandleFooFinished);
GameState.Unsubscribe("OnBarFinished", HandleBarFinished);
}
你问,为什么我什至需要设置这些标志?我正在设计一些逻辑来处理场景转换,所以我正在整合这样的流程逻辑:
TransitionFromSceneAToSceneB {
GameState.FireEvent("DoFooInAnotherScene")
yield return new WaitUntil(FooFinished);
// Do bar and baz after foo is done, wait until they both finish
GameState.FireEvent("DoBarInAnotherScene");
GameState.FireEvent("DoBazInAnotherScene");
yield return new WaitUntil(BarFinished);
yield return new WaitUntil(BazFinished);
// Celebrate
...
}
你怎么看?有标志的查找字典和处理订阅和取消订阅的辅助方法吗?做一些完全不同的事情,因为这是一种愚蠢的幼稚方法?
【问题讨论】:
-
谢谢!我看着那里,似乎他们想要实际的工作代码而不是这个伪代码。