软件设计-模块化设计初思考一
模块化设计
说明:模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,
并定义和调试好各个框架之间的输入、输出链接关系。
逐步求精的结果是得到一系列以功能块为单位的算法描述。
以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。
模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。
改变某个子功能只需相应改变相应模块即可。
最近在设计软件,突发奇想,把自己的模块化设计的思考记录下来
首先
在需求分析时,应尽可能的了解所有可能的功能,以及日后可能扩展的功能
当我们整理出所有功能时,应对其中的功能,进行模块化,(若是经验足够,完全可以自顶向下,直接模块化思考。)对于新手而言,最简单的方式是,列出所有的功能,并对其分类,抽象。
举例
我们从一个软件的开始模块(个人模块)进行分析,对于个人模块,我们可以分析出以下功能
- 登录
- 注册
- 忘记密码
- 冻结
- 申请解冻
- 审核用户状态
在 登录 中 涉及到验证方式 :
- 账号验证
- 邮箱验证
- 手机号码验证
- 。。。(其他可以追加思考)
在 注册 时 验证用户唯一性
- 邮箱验证
- 手机号码验证
- 。。。(QQ, WeChat … and so on)
在 冻结与解冻 中 有个 状态提醒
- 邮箱提醒
- 手机短信提醒
于此同时
在 登录、注册、冻结与解冻中:
1、可以抽象出一个 Verify 接口
具体 实现 可以为
- 邮箱验证
- 手机号码验证
2、可以抽象出一个 Sender 接口
具体 实现 可以为
- 邮箱发送
- 手机号码发送
所以在用户模块中 会聚合 Verify 的具体实现
Sender 的具体实现
另外
对于发送的内容 我们可以通过 配置文件 配置 ,当我们模块多的时候可以 将 配置 抽象 类
—>配置类
代码
Verify 接口我是这样设计的
package com.ss.account.verify;
public interface Verify {
boolean verifyAccount(String account);
}
Verify 接口 实现类
package com.ss.account.verify;
public class MailVerify implements Verify{
@Override
public boolean verifyAccount(String account)