【发布时间】:2015-11-19 00:27:59
【问题描述】:
最近我一直在重新考虑我的android architecture project,试图将其调整为更“干净的架构”,特别是suggested by “Uncle Bob” 的那种设计。
它涉及多层抽象,良好的职责隔离和依赖注入实现的非常强的依赖倒置;这最终导致了一个非常解耦的便携系统。通过单元测试和集成测试进行测试的完美候选人。
在我的 android 实现中,我最终拥有了三个不同的模块或层:
-域:实体、交互者、演示者(纯java模块)
-数据:(作为存储库向域提供数据)(android 库模块)
-presentation:与ui相关的东西、片段、活动、视图等(android应用模块)
所以,我正在尝试找出 iOS 生态系统中的最佳方法。 我尝试创建一个具有多个目标的项目来实现相同的解决方案:
-domain:命令行目标(这看起来很奇怪,但我认为这是最纯粹的 swift 目标)
-数据:可可触控框架
-演示文稿:可可触控框架
通过这种方法,我可以像使用 android 模块一样使用这些目标。但我发现的第一个警告是我需要手动将每个新文件添加到依赖目标。
但我的知识在具有多个目标的项目中非常有限。我的意思是我从未创建过具有多个目标的 iOS 应用程序。所以我不知道解决方案是否会使用框架(cocoa touch/cocoa)作为目标,而不是域层的命令行模块。
任何想法都会非常感激。
谢谢!
【问题讨论】:
-
看看 MVVM 和 VIPER 模式和方法 (google)。我认为您的 Bob 叔叔方法不适用于 Obj-c。 MVVM linkVIPER link祝你好运
-
感谢您提供的信息,但您根本没有回答我的问题。我问过如何使用某种目标来隔离纯 swift 代码。你可以详细说明为什么你认为不可能实现那种架构,因为我很确定它是,不管程序语言(objective-c,swift ...)
-
我实际上并没有看到任何问题——“所以,我正在尝试找出 iOS 生态系统中最好的方法”我不知道(或喜欢) 迅速,所以我无法帮助你。也许迅速标记您的问题,您可能会得到一些快速的开发人员。你有没有看过毒蛇,因为如果你费心去看,你会发现这种模式与你鲍勃叔叔的模式非常匹配——这就是我喜欢帮助别人的原因,他们会因为你不回答他们没有问的问题而责备你。
-
当我读到“我认为你的 Bob 叔叔方法不适用于 Obj-c”时。我停止阅读。你为什么这么说,同时你提供的资源显然已经实施了这种方法。无论如何,谢谢你的帮助,真的。但是实现 viper 示例的人……他们并不关心为每个抽象层创建不同的目标。
标签: android ios architecture