【问题标题】:What is this MVC pattern: a stub delegate and data source什么是 MVC 模式:存根委托和数据源
【发布时间】: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


【解决方案1】:

我不认为你有什么可担心的。 objc.io 上有一篇很棒的文章,它正好解决了这个问题。看这里:http://www.objc.io/issue-1/lighter-view-controllers.html

另外,直接回答你的问题,我不认为这是一个命名模式,而是一个称为“关注点分离”的设计原则:http://en.wikipedia.org/wiki/Separation_of_concerns

【讨论】:

  • 谢谢,很棒的文章
猜你喜欢
  • 2011-01-14
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多