【问题标题】:Model View Presenter and iOS (Swift) Architecture模型视图展示器和 iOS (Swift) 架构
【发布时间】:2016-08-25 16:34:45
【问题描述】:

我一直在研究将 Model View Presenter 架构应用到一个新的 iOS 项目。经过一番阅读,我发现这个post 有最好的例子。链接到代码的原始要点here

示例底部有程序集代码:

// Assembling of MVP
let model = Person(firstName: "David", lastName: "Blaine")
let view = GreetingViewController()
let presenter = GreetingPresenter(view: view, person: model)
view.presenter = presenter

此外,作者指出:

由于我们不想让 View 知道 Model,所以在呈现视图控制器(也就是 View)中进行组装是不对的,因此我们必须在其他地方进行组装。例如,我们可以制作应用范围的路由器服务,该服务将负责执行组装和视图到视图的呈现。

我的问题:

  • 我应该将程序集代码放在哪里?
  • 在哪里可以找到更多应用范围的路由器示例?

【问题讨论】:

    标签: ios swift architecture mvp


    【解决方案1】:

    所以不只是我对此感到疑惑;)

    让我与您分享我关于 iOS MVP 的其他发现:

    Screencast by David Gadd - 有点长(1 小时 20 分钟)而且有点旧(2012 年 12 月),但肯定值得一看。您将在那里看到如何为一个非常小的应用程序实现 MVP(在 AppCode 中)(以及关于如何编写单元测试的很好的描述)。 David 正在创建的应用程序中的 router 称为 ServiceLocator。不幸的是,我找不到要下载此截屏视频的代码(但可以在观看时创建您自己的应用程序版本)。

    也许还有其他方法可以创建路由器,但这个截屏视频帮助我更了解了它。我对 MVP 概念还很陌生,而且我没有在更大的应用程序中使用它(大于 one-screen-let's-see-how-it's-done-app)。很高兴看到 MVP 在现实生活中的应用程序中是如何实现的……

    [编辑]

    我刚刚意识到我没有回答你的第一个问题。

    根据截屏中的应用程序 router 是一个具有一个类方法的类:

    + (id)resolve:(PresenterTypeEnum)type;
    

    在这个方法的实现中你会发现简单的开关。基于 type 在参数方法中发送将返回正确的演示者实例。

    这个方法在viewDidLoad中被调用。一旦你有了演示者的实例,你只需要使用 self 设置演示者的视图。

    我希望这个解释是清楚的。无论如何,我强烈推荐看投屏,那么它应该像水晶一样清晰;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 2017-02-02
      • 2020-05-31
      相关资源
      最近更新 更多