我的程序中有一些视图控制器需要一些数据和方向才能运行。它们有一个数据源和委托属性,它们在初始化时设置(也许这就是问题?)。 在使用这些之后,抽象对于数据不变的简单用例来说变得很痛苦。痛苦的是每个呼叫者"需要实现标准数据源并委托这些控制器所需的方法。
解决方案?更抽象!建立一名中层经理并使用以下内容非常诱人:
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];
这种方法很有吸引力,因为,例如,我的主视图控制器处理几个MyViewController
,只有几个不同的用例。目前,这使得我的主视图控制器中的大部分代码都集中在该管理上,这将减轻这种情况。
这种方法的可怕部分是我之前没有听说过这种模式,我很想发明新的抽象。
这是"中层经理"一种已知的设计模式,或者这种方法是MVC反模式?
答案 0 :(得分:2)
我不认为你有什么值得担心的。有一篇关于objc.io的文章很好地处理了这个问题。看看这里:http://www.objc.io/issue-1/lighter-view-controllers.html
另外,为了直接回答你的问题,我不认为这是一个有名的模式,而是一个名为"分离关注的设计原则":http://en.wikipedia.org/wiki/Separation_of_concerns