我制作游戏,它可能有模态UI窗口,如弹出窗口。 我将所有小提琴封装到我的类中,我只是调用一个方法在屏幕上显示这样的窗口,例如显示字符列表的方法:
ShowCharactersTable(List<Character>list,
Action<Character>didSelectCharacter, Action<bool>didCancel)
使用示例:
ShowCharactersTable(someList, delegate(Character selectedCharacter) {
// code that runs after you picked a character
, delegate(bool didCancel){
// code that runs after you cancelled selection
});
这很好。一切都是透明的,易于使用。但是一旦我需要筑巢,我就陷入困境。例如,在字符列表中,每个字符单元格上都有几个按钮,因此我需要为其提供代理。这变得复杂了。我也可能需要在其上显示另一个模态窗口,通过这样的调用:
ShowActivitySelector(List<Activity>activitiesToShow,
Action<Activity>didSelectActivity,
Action<bool>didCancelPickingActivity);
当我选择活动时,如果出现问题,我可能需要显示警报,例如:
ShowAlert(string alertText, Activity<bool>didAccept,
Activity<bool>didCancel);
现在,要调用一个简单的字符表,我需要编写一个带有嵌套委托的3页长方法。听起来不是很有趣。我如何模块化这个并使其更容易/更易于维护?
我不想将我的界面耦合到我的模型,因为我需要使用不同的参数显示来自游戏的许多不同部分的列表,选择器和警报。 如何解决这个问题?我该怎么办?