H eroArchitecture
简介
iOS的Hero
架构是一种避免大型UIViewController
实现同时分离职责的方法。这种分离是通过创建模块和工作流程来实现的。
模块的每个组件都有特定的任务。
视图层
视图层
负责显示用户所见的内容。它接收所有用户输入,将其导向协调器
,并显示其输出。
不应在此组件中使用数据库实体。仅使用PONSO
(Plain Old NSObject)向视图提供要显示的数据。
需要实现的协议
ViewController 实现了 ViewInput
协议来处理视图更新,并且可以选择实现 ViewDelegate
。
示例
- (void)updateSuperHeroProfile:(HEROProfilePonso*)profile;
路由器
Router
组件是一个模块连接到工作流的部分。在 components 部分不应使用数据库实体或 PONSO
。
使用此组件通过 WorkflowInput
连接到工作流,该接口由选择的工作流实现。
需要实现的协议
Router
组件实现了一个协议
RouterInput
- (void)didFinishEditingSuperHeroOnRouter:(HEROBaseRouter*)router;
协调器
Coordinator
是一个抽象层,它将视图层、用例和路由器从彼此中分离出来。它不包含任何逻辑。
需要实现的协议
它实现了3个协议
ViewOutput
UseCaseOutput
RouterOutput
示例
- (void)favoritedSuperHero:(HEROProfilePonso*)profile;
用例
《用例》组件负责您应用的业务逻辑。使用此组件从实体创建您的 PONSO
(Plain Old NSObject),或使用新数据更新实体。它还响应、保存或处理用户输入,并通过 UseCaseOutput
协议向《协调器》发送更新消息。
要实现的协议
用例实现一个协议:UseCaseInput
。
示例
- (void)favoritedSuperHero:(HEROProfilePonso*)profile;
要求
- Xcode 9+
- iOS 9+
安装
HeroArchitecture 可通过 CocoaPods 获取。要安装,只需将以下行添加到您的 Podfile 。
pod 'HeroArchitecture'
用法
此Pod提供Hero
架构的基础实现。这些类是为了为您提供一种快速简单的方式,以便使用Hero
架构来构建您的下一个应用程序。
Hero
架构基于模块,这些模块由用例和工作流程定义,用于确定下一个屏幕/工作流程。
根据此Pod,有两种创建模块的方式
- 使用'Generamba'自动生成模块
- 手动子类化每个组件
Generamba
自动生成模块
使用这是创建Hero
模块最快的方法。您可以使用提供的模板或创建您自己的模板。
Generamba
1. 安装运行命令gem install generamba
。
Generamba
2. 设置要设置Generamba
,只需运行命令generamba setup
并按步骤操作。
3. 安装模板
打开Rambafile
文件,并添加以下行
# a shared template catalog
catalogs:
- 'https://github.com/fluidmobile/heroTemplates'
# add template by name
templates:
- {name: HeroModule}
添加模板源后,运行命令generamba template install
以安装模板。
4. 生成模块
正确配置Generamba
后,只需运行命令 generamba gen [MODULE_NAME] [TEMPLATE_NAME]
即可从模板创建您的模块。
样本
generamba gen Login HeroModule
创建工作流也可以用同样的方法,但如果您的模块有工作流,您需要手动将路由器添加到工作流协议。
手动子类化每个组件
如果您选择手动创建模块,您必须将以下类子类化以创建模块
- 视图层
HEROBaseViewController
HEROBaseView
- 协调器
HEROBaseCoordinator
- 路由器
HEROBaseRouter
- 用例
HEROBaseUsecase
另外,您还需要添加一个头文件来声明您的视图、路由、用例输入和输出协议,并覆盖基本类的基本协议方法。
创建工作流也可以用同样的方法,但如果您的模块有工作流,您需要手动将路由器添加到工作流协议。
文档
详细文档可在此处查看 https://github.com/fluidmobile/hero-documentation。
示例
要运行示例项目,首先克隆仓库,然后从示例目录中运行 pod install
。
作者
fluidmobile GmbH, [email protected]
许可
HeroArchitecture遵循MIT协议。更多信息请参阅LICENSE文件。