背景介绍
人机交互的方式最初起始于命令行交互,虽然图形界面的交互方式应用越来越广 泛,可是命令行交互仍然有着它不可替代的地位。命令行交互程序是以命令行方式进行的人机交互, 即用户按着程序的提示,一步步进行输入,而程序负责解释并最终执行指令。
本文以一个简 单的部署 war 包的实例,说明在命令行交互程序设计中遇到的问题,以及如何使用设计模式来解决 这些问题。
实例简介
在实例中,命令行交互程序给出了一组问题请求用户输入,然后 根据用户的输入将 war 包部署在服务器上。如图 1 所示,应用程序共有 7 个问题,需要用户输入 不同的部署信息。这些问题将以特定的顺序和用户进行交互,用户则依次给出问题的答案。
图 1. 单个 war 包部署实例
开发命令行交互程序-移动应用开发模式">
问题 1. 传统命令行交互模式不支持回退和跳转
如图 1 所示,将 war 包部署到服务器上共有 7 个问题请求,而用户并不需要依次回答 7 个问 题,当 war 包存在时,用户只需要回答问题 1、2、3、6、7;而当 war 包不存在时,用户需要回答 1、2、4、5、6、7。因此,根据用户输入的不同,可能遇到的问题流也不同。在传统的命令行交互模 式中,用户只能按照问题流的顺序前进,不能回退和跳转,比如,用户行进到问题 3 时,无法回退 至问题 2。
问题 2. 传统命令行交互模式很难适应需求变化
当程序的需求发生变化时,传统的命令行交互模式也很难适应变化。以图 1 为例,当需要部署多 个 war 包时,流程图将会变为图 2 所示,传统的程序在处理这种变化时,显得缺乏灵活性。
图 2. 多个 war 包部署实例
本节将使用设计模式给出 图 1(单个 war 包部署)的设计方案,其后在图 1 的设计方案的基础上进行扩展,实现图 2(多个 war 包部署)的需求。