为了使得Maven的学习更加具有实用性,因此按照书上提供的部分,以目前的环境实现一个简单的账户注册案例。
1. 简单的账户注册服务
作为一个用户,注册账户的时候往往需要做以下的事情
提供一个未被使用的账号ID
提供一个未被使用的email地址
提供一个任意的显示名称
设置安全密码,并重复输入确认
输入验证码
前往邮箱查收激活连接,并单击激活账号
登录
2. 需求阐述
接下来从软件工程的视角分析一下该服务的需求:
用例图如下:
需求用例:
该注册账户用例包含了一个主要场景和几个扩展场景。该用例的角色只有两个:用户和系统。
主要场景描述了用户如何与系统一步一步地交互,并且成功完成注册。
扩展场景则描述了一些中途发生意外的情形,比如用户输错验证码的时候,系统就需要生成验证码,用户也需要重新输入验证码。
3. 界面原型
4. 简要设计
接口:
模块结构:
定义了系统核心的接口之后,基于功能分割和方便复用的原则,再对系统进一步进行划分,这里基于包名划分模块,在java中也是比较常见的做法。虽然这个系统的功能单一,设计简单,不用划分模块,在这里划分模块主要是为了后面演示Maven的一些特性,因此采用这种做法。划分后的模块如下所示
接下来稍微解释下各个模块的功能:
com.my.account.web:该模块包含所有与Web相关的内容,包括可能的JSP、Servlet、web.xml等。它直接依赖于com.my.account.serice模块,使用其提供服务。
com.my.account.serice:系统的核心,它封装了所有下层细节,对外暴露简单的接口。这实际上是一个Façade(外观)模式。
com.my.account.persist:处理账户信息的持久化,包括增删改查等,根据实现可以是数据库或者文件。
com.my.account.captcha:处理验证码的key生成,图片生成以及验证等,这里需要第三方的类库来帮助实现这些功能。
com.my.account.email:处理邮件服务的配置、激活邮件的编写和发送等工作。