VIPER架构详解
什么是VIPER VIPER是一种更加细粒度的架构模式,由Mutual Mobile公司提出。VIPER将应用分为五个层次: View(视图):负责UI展示 Interactor(交互器):负责业务逻辑 Presenter(展示器):负责视图逻辑 Entity(实体):数据模型 Router(路由):负责页面导航 VIPER的核心思想是单一职责原则,每个组件只负责一件事。 VIPER的结构 flowchart TB subgraph Module["Module"] View["View"] Presenter["Presenter"] Interactor["Interactor"] Router["Router"] Entity["Entity"] View -->|用户事件| Presenter Presenter -->|更新UI| View Presenter -->|业务请求| Interactor Interactor -->|业务结果| Presenter Presenter -->|导航请求| Router Interactor -->|读写数据| Entity Router -.->|创建并导航到其他模块| View end 数据流向说明 用户交互流:View → Presenter → Interactor → Presenter → View 导航流:View → Presenter → Router → 新的 View 数据流:Interactor → Entity(数据存储)→ Interactor → Presenter → View(数据展示) VIPER的五个组件 View(视图层) View负责: 展示UI 接收用户输入并传递给Presenter 实现Presenter定义的协议 // View协议 protocol UserListViewProtocol: AnyObject { func showLoading() func showUsers(_ users: [UserViewModel]) func showError(_ message: String) } // ViewController实现 class UserListViewController: UIViewController, UserListViewProtocol { var presenter: UserListPresenterProtocol! private var users: [UserViewModel] = [] override func viewDidLoad() { super.viewDidLoad() presenter.viewDidLoad() } func showUsers(_ users: [UserViewModel]) { self.users = users tableView.reloadData() } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { presenter.didSelectUser(at: indexPath.row) } } Interactor(交互器) Interactor负责: ...