-
Notifications
You must be signed in to change notification settings - Fork 1
GUI 架构简述
转载自https://zxfcumtcs.github.io/2016/07/20/MobileArchitecture/#more
本文从细节入手,尝试分析了几种常见的 GUI 架构:MVC、MVCS、MVP、MVVM。对于在实际开发中如何选择给出了一些参考意见。
移动开发架构,无论是 iOS、Andriod 还是 Web 都属于 GUI (Graphical User Interfaces) 架构范畴。2006年,Martin Fowler 的 GUI Architectures 一文可谓是经典之作。文中 Martin Fowler 提到 MVC 模式如何组织代码、划分模块职责,还提到 Data Binding、Flow Synchronization 以及 Observer Synchronization 等核心概念。 纵观十年来 GUI 架构演变,无论是 MVCS、MVP 还是 MVVM,其实讨论的核心问题还是如何分层、如何划分模块职责、做好代码隔离。
谈到 iOS 上常见架构,相信只要有半年以上开发经验的同学都能侃侃而谈。但在实际交流过程中发现不少同学对关键细节问题却认知模糊,甚至是错误的。因此,本文尝试从细节入手对几种常见架构进行简单描述(对架构的认识智者见智、仁者见仁,我所描述的也不一定是正确的)。
上文提到各种架构虽各种不同,但它们其实都是在讨论一个问题:『如何分层』。
那么在继续之前,我们有必要思考一下:为什么要分层?
计算机界有一句大道至简的名言: All problems in computer science can be solved by another level of indirection.
之所以要分层,最终目的是降低系统整体复杂度。
通过分层我们至少能获得以下能力:
- 提供良好的抽象,隐藏实现细节,降低耦合度;
- 隔离变化;
- 提高模块可复用性;
- 增强系统可扩展性。
说到分层,可能最先想到的例子是 OSI 七层或 TCP/IP 五层网络模型: