原始的MVC对于iOS开发不切实际。
视图知道模型,控制器知道模型和视图。
我们想要单项数据流,我们需要松耦合高内聚,因此需要减少依赖。
利用外观模式(门面模式)降低控制器访问模型的复杂度。
现代模式中的MVC遗产
苹果的MVC:显然,UIViewController扮演了视图和控制器两个角色。
MVP/MVVM:单一职责原则被满足了,每个实体都承担了相符合的角色。
VIPER/Riblets:在VIPER和Riblets原始的体系里都没有说明必须有一个服务/库/存储(连同交互器和实体作为一个模型)。我们至少有两个控制器,一个Presenter和一个Router。Presenter里有UI相关逻辑,Router是关于模块间转换的。
我们学到了什么:
不要把MVC当成一个单独的架构设计类型,而是把它作为一个好的应用架构的指导方针,或者是一系列可以帮我们解决一些问题的设计模式。
在一场面试里,确保不仅能解释清楚一个模式,而且能够理解这个模式怎么帮你解决日常开发中的真实问题。
不要盲目地为一个应用实现一个像VIPER/Riblets这样的严格的架构,而不管它的尺寸和真实环境,不选择你已经写过的大量的模板代码而形成的一贯的代码库。记着,我们随时都能在几个实体之间分解出一个角色,但是如果没必要就不要这么做。
设计生产代码让用户能够和信息或者系统交互,而不是让开发者的生活更容易或者更舒服。同时,避免写代码就好像没有明天似的。明天你可能就是那个需要用今天的代码作为基础书写新功能的人!



所有评论(0)