Tag: 清洁建筑

建筑设计模式:VIPER

抱歉,延迟了,但是在阅读了文章之后,我意识到NasaAPOD应用程序的当前安装方式对于实施VIPER并不是很有趣。 应用程序内部需要进行更多的交互,因此我回到了MVC,MVVM和MVP来全面实现相同的功能。 我所做的是添加了“收藏夹”功能,该功能只是将您的收藏夹移到表视图的顶部(实际上并没有保存任何内容)。 因此,至少MVP和VIPER现在更加有趣了。 我不确定的一件事是如何为单元设置演示者/交互者。 似乎应该有一个presenter / interactor组件,因为它还可以处理图像缓存。 但是我不能完全考虑如何确保我没有制造大量或可能泄漏的材料。 auth0.com教程肯定有很大帮助,所以我的VIPER应用程序很大程度上基于它。 我发现有些奇怪,但根据以前的工作是很正常的,是当用户点击某些内容时,它会通过演示者而立即返回视图。 例如,用户点击信息图标,视图告诉演示者用户点击,演示者返回查看告诉其发生点击并显示详细信息。 auth0网站还建议您不要手动创建所有文件(我做了🙃),他们建议使用工具为您生成文件。 因为我决定手动创建所有文件,所以我确实很难考虑应用程序所需的每个文件的所有交互和协议。 如此之多,以至于我把它抽了出来。 我所做的一件事有些不同,那就是该应用程序如何设置演示者和交互者。 auth0站点将这些变量公开,但是我想尽可能地保持所有私有。 所以我添加了attachView(viewInteractor:) , attachInteractor(interactor:)和attachPresenter(presenter:)函数。 您可以在下面看到完整的应用程序。 ashleyng /建筑设计模式 通过在GitHub上创建一个帐户来为ArchitectureDesignPatterns开发做出贡献。 github.com 到目前为止,这是最有趣的学习模式,并且肯定有很多设置需要使它起作用。 话虽如此,我现在不认为VIPER是我的选择。 我仍然不太了解Router部分,但是如果没有Router ,也许还有VIPER的味道? 比较MVVM和Viper架构:何时使用一种或另一种 TL; DR:设计良好的体系结构对于长期保持项目可维护性很重要。 在这篇文章中… auth0.com 视图,交互器,演示者,实体和路由器 视图 —界面层(UIKit文件)。 视图负责显示演示者要求他们执行的操作,并将用户输入回传给演示者 Interactor —负责从模型层(使用网络或本地数据库)获取数据,并且其实现完全独立于用户界面。 演示者 —查看逻辑以格式化要显示的数据。 这是MVVM中ViewModel完成的工作的一部分。 演示者从交互器接收数据,创建视图模型并将其携带到视图。 还对用户输入做出反应,请求更多数据或将其发送回交互器 实体 -模型层职责的一部分。 没有业务逻辑的纯数据对象。 由交互者管理。 路由器 -应用程序的导航逻辑。 示例:如果必须在iPad应用程序中重用相同的iPhone视图,则唯一可能改变的是视图的显示方式。 这使您的其他图层保持不变。 示例应用 视图 […]