简易顺序执行框架attic开发笔记1


最近业余时间在写一个叫做attic的东西。attic的灵感来自《敏捷开发》中的验收测试,比如下面的验收测试脚本:

AddEmp 1429 "Robert Martin" 3215.98
Payday
Verfiy Paycheck EmpId 1429 Grosspay 3215.88

这是不懂编程的人,具体来说是业务人员也能看懂的验收测试脚本。《敏捷开发》没有对脚本的执行与实现做介绍,但是我觉得我get the point了:

  • 按照行解析执行命令(Command)
  • 类似CSV方式解析行,因为存在空格,不能直接按照空格split
  • 有很多命令,需要命令库或者动态加载命令

转化为程序设计就是

val context = new CommandContext
file.getLines.foreach{line =>
  createCommand(line).execute(context)
}

context是命令之间交互的载体,个人认为命令之间肯定存在依赖关系
createCommand完成解析和创建命令,可能是这样:

def createCommand(line: String): Command = {
  val cmdNameAndArgs = parse(line)
  val cmd = Class.forName(cmdNameAndArgs.name).newInstance.asInstanceOf[Command]
  cmd.setArguments(cmdNameAndArgs.arguments)
  return cmd
}

这里cmd直接用load class的方式,便于扩展。parse部分相对难一些,我暂时用空格分割实现,之后肯定要换成类似CSV解析格式。

以上就是attic开发笔记第一部分。


One response to “简易顺序执行框架attic开发笔记1”