iOS 中 Model、View 和 Presenter 的不同框架?
Different framework for Model, View and Presenter in iOS?
我是 iOS 开发的新手,如果我的问题听起来微不足道,请原谅。
我打算引入 MVP 或 VIPER 模式。我来自 Web 背景,在 Web 应用程序中我们曾经遵循不同的 layers/dlls(对于模型、视图、通用等)。在 iOS 中遵循相同的分层方法(在本例中为框架)是否有意义,或者它是否会矫枉过正?我还没有遇到任何为模型、视图和演示者创建不同框架的示例项目(基于 MVP)?如果有人可以分享我们可以用作入门项目的任何示例项目(基于 MVP),那就太好了。
提前致谢
在iOS中,我们一般使用MVC——Model/View/Controller。所以,如果您正在 iOS 世界中寻找模拟,就是这样。如果你说你真的深入研究了 MVC,但发现有些东西你非常不满意,因此想引入一个不同的模式,那么这是一个不同的问题。
所以,不,您在 MVC 等方法中看到的那种逻辑上的职责分离并不过分。事实上,"view" 和 "controller" 类 的划分对于我们所做的一切都是相当重要的(例如 UIView
sub类、UIViewController
sub类, 等), 所以你真正需要做的唯一一件事就是设计适当 "model" 类 然后你就可以开始比赛了。
但是,在回答您的问题时,您通常不会为模型、视图和控制器使用单独的框架目标。那可能会矫枉过正。通常,您可以通过在项目中明智地使用 Xcode groups/folders 来跟踪所有内容。我们通常只是出于更多的技术或逻辑原因(实时视图、应用程序扩展、多个应用程序之间共享代码等)将内容拉入框架......请参阅 WWDC 2015 Building Modern Frameworks 以了解您通常何时使用框架的讨论) .
但是关于 MVC 与 MVP 或 VIPER(或 MVVM 或其他)的问题。我建议您简单地接受所有这些模式的共同精神(即职责分离)并将其应用到您的 iOS MVC 代码中。一旦您有了一些 iOS 经验,您就可以重新评估这个模式问题。
如果您开始 iOS 开发并且正在寻找一个好的架构,请选择 VIPER。只要你:
1 - 自动生成 VIPER 文件
2 - 自动化 VIPER 模块初始化
要完成上述两个要求,请使用此 Xcode 插件 (https://github.com/natangr/ViperTemplate) 自动生成和初始化 VIPER 文件。效果很好!
并阅读此 post https://www.ckl.io/blog/best-practices-viper-architecture 以获取有关如何在使用 VIPER 时实现自动化的更多提示。
我确实使用它,即使是非常小的项目(160 小时的开发)
我是 iOS 开发的新手,如果我的问题听起来微不足道,请原谅。
我打算引入 MVP 或 VIPER 模式。我来自 Web 背景,在 Web 应用程序中我们曾经遵循不同的 layers/dlls(对于模型、视图、通用等)。在 iOS 中遵循相同的分层方法(在本例中为框架)是否有意义,或者它是否会矫枉过正?我还没有遇到任何为模型、视图和演示者创建不同框架的示例项目(基于 MVP)?如果有人可以分享我们可以用作入门项目的任何示例项目(基于 MVP),那就太好了。
提前致谢
在iOS中,我们一般使用MVC——Model/View/Controller。所以,如果您正在 iOS 世界中寻找模拟,就是这样。如果你说你真的深入研究了 MVC,但发现有些东西你非常不满意,因此想引入一个不同的模式,那么这是一个不同的问题。
所以,不,您在 MVC 等方法中看到的那种逻辑上的职责分离并不过分。事实上,"view" 和 "controller" 类 的划分对于我们所做的一切都是相当重要的(例如 UIView
sub类、UIViewController
sub类, 等), 所以你真正需要做的唯一一件事就是设计适当 "model" 类 然后你就可以开始比赛了。
但是,在回答您的问题时,您通常不会为模型、视图和控制器使用单独的框架目标。那可能会矫枉过正。通常,您可以通过在项目中明智地使用 Xcode groups/folders 来跟踪所有内容。我们通常只是出于更多的技术或逻辑原因(实时视图、应用程序扩展、多个应用程序之间共享代码等)将内容拉入框架......请参阅 WWDC 2015 Building Modern Frameworks 以了解您通常何时使用框架的讨论) .
但是关于 MVC 与 MVP 或 VIPER(或 MVVM 或其他)的问题。我建议您简单地接受所有这些模式的共同精神(即职责分离)并将其应用到您的 iOS MVC 代码中。一旦您有了一些 iOS 经验,您就可以重新评估这个模式问题。
如果您开始 iOS 开发并且正在寻找一个好的架构,请选择 VIPER。只要你:
1 - 自动生成 VIPER 文件
2 - 自动化 VIPER 模块初始化
要完成上述两个要求,请使用此 Xcode 插件 (https://github.com/natangr/ViperTemplate) 自动生成和初始化 VIPER 文件。效果很好!
并阅读此 post https://www.ckl.io/blog/best-practices-viper-architecture 以获取有关如何在使用 VIPER 时实现自动化的更多提示。
我确实使用它,即使是非常小的项目(160 小时的开发)