HeroArchitecture 0.4.8.5

HeroArchitecture 0.4.8.5

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2018年8月

fluidmobile GmbHMax BaumbachMoritz Ellerbrock维护。



H eroArchitecture

CI Status License Version Platform Twitter

简介

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模块最快的方法。您可以使用提供的模板或创建您自己的模板

1. 安装Generamba

运行命令gem install generamba

2. 设置Generamba

要设置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文件。