【发布时间】:2014-11-23 09:58:13
【问题描述】:
我的程序中有一些视图控制器需要一些数据和方向才能运行。它们具有在初始化时设置的数据源和委托属性(也许这是问题所在?)。 在使用了一段时间之后,对于数据不变的简单用例来说,抽象变得很痛苦。痛苦在于每个“调用者”都需要实现这些控制器所需的标准数据源和委托方法。
解决方案?更抽象!做一个中层经理并使用类似的东西是非常诱人的:
self.myVC = [[MyViewController alloc] init];
id myVCSimpleDataSourceAndDelegate = [[MyVCSimpleDataSourceAndDelegate alloc] init];
myVCSimpleDataSourceAndDelegate.data = @[1, 2, 3];
myVC.dataSource = myVCSimpleDataSourceAndDelegate;
myVC.delegate = myVCSimpleDataSourceAndDelegate;
[self.navigationController pushViewController:myVC animated:YES];
这种方法很有吸引力,例如,我的主视图控制器处理几个MyViewControllers,只有几个不同的用例。目前,这使得我的主视图控制器中的大部分代码都集中在该管理上,这将减轻负担。
这种方法的可怕之处在于我以前从未听说过这种模式,而且我对发明新的抽象类型持谨慎态度。
这种“中间管理者”是一种已知的设计模式,还是这种方法是一种 MVC 反模式?
【问题讨论】:
-
在:“每个调用者都需要实现这些控制器所需的标准数据源和委托方法”中的“调用者”是什么意思?
标签: ios cocoa design-patterns model-view-controller