Github Signup(示例)

这是一个模拟用户注册的程序,你可以在这里下载这个例子

简介

这个 App 主要有这样几个交互:

  • 当用户输入户名时,验证用户名是否有效,是否已被占用,将验证结果显示出来。

  • 当用户输入密码时,验证密码是否有效,将验证结果显示出来。

  • 当用户输入重复密码时,验证重复密码是否相同,将验证结果显示出来。

  • 当所有验证都有效时,注册按钮才可点击。

  • 当点击注册按钮后发起注册请求(模拟),然后将结果显示出来。

Service

这里需要集成三个服务:

  • GitHubAPI 提供 GitHub 网络服务

  • GitHubValidationService 提供输入验证服务

  • Wireframe 提供弹框服务

这个例子目前只提供了这三个服务,实际上这一层还可以包含其他的一些服务,例如:数据库,定位,蓝牙...

ViewModel

ViewModel 需要集成这些服务,并且将用户输入,转换为状态输出:

集成服务:

  • API GitHub 网络服务

  • validationService 输入验证服务

  • wireframe 弹框服务

输入:

  • username 输入的用户名

  • password 输入的密码

  • repeatedPassword 重复输入的密码

  • loginTaps 点击登录按钮

输出:

  • validatedUsername 用户名校验结果

  • validatedPassword 密码校验结果

  • validatedPasswordRepeated 重复密码校验结果

  • signupEnabled 是否允许登录

  • signedIn 登录结果

  • signingIn 是否正在登录

init 方法内部,将输入转换为输出。

ViewController

ViewController 主要负责数据绑定:

用户行为传入给 ViewModel

  • username 将用户名输入框的当前文本传入

  • password 将密码输入框的当前文本传入

  • ...

ViewModel输出状态显示出来:

  • validatedUsername 用对应的 label 将用户名验证结果显示出来

  • validatedPassword 用对应的 label 将密码验证结果显示出来

  • ...

整体结构

以下是全部的核心代码:

这里还有一个 Driver 版的演示代码,有兴趣的同学可以了解一下。

Last updated

Was this helpful?