应用设计模式开发命令行交互程序

背景介绍

人机交互的方式最初起始于命令行交互,虽然图形界面的交互方式应用越来越广 泛,可是命令行交互仍然有着它不可替代的地位。命令行交互程序是以命令行方式进行的人机交互, 即用户按着程序的提示,一步步进行输入,而程序负责解释并最终执行指令。

本文以一个简 单的部署 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 包部署)的需求。

时间: 2024-09-09 13:22:33

应用设计模式开发命令行交互程序的相关文章

Java中使用设计模式来优化命令行交互程序的开发

人机交互的方式最初起始于命令行交互,虽然图形界面的交互方式应用越来越广泛,可是命令行交互仍然有着它不可替代的地位.命令行交互程序是以命令行方式进行的http://www.aliyun.com/zixun/aggregation/11432.html">人机交互,即用户按着程序的提示,一步步进行输入,而程序负责解释并最终执行指令. 本文以一个简单的部署 war 包的实例,说明在命令行交互程序设计中遇到的问题,以及如何使用设计模式来解决这些问题. 实例简介 在实例中,命令行交互程序给出了一组问

LFTP : 一个功能强大的命令行FTP程序

LFTP : 一个功能强大的命令行FTP程序 大家好,这篇文章是介绍Lftp以及如何在Linux操作系统下安装的.Lftp是一个基于命令行的文件传输软件(也被称为FTP客户端),由Alexander Lukyanov开发并以GNU GPL协议许可发行.除了FTP协议外,它还支持FTPS,HTTP,HTTPS,HFTP,FISH,以及SFTP等协议.这个程序还支持FXP,允许数据绕过客户端直接在两个FTP服务器之间传输. 它有很多很棒的高级功能,比如递归镜像整个目录树以及断点续传下载.传输任务可以

使用Ruby来编写访问Twitter的命令行应用程序的教程_ruby专题

简介 Twitter 现已成为社交网络中的佼佼者.Twitter 只允许用户发布不多于 140 个字符的内容,谁能够想到,这个过去毫不起眼的小网站如今却价值十多亿美元,拥有数百万用户,Twitter 平台上已构建了大量的应用程序,并且不断有新的开发人员准备投入这一浪潮中. 本文并不打算介绍 Twitter(事实上,也没有这个必要).相反,本文将介绍如何访问 Twitter 平台来构建出色的命令行应用程序.Twitter 支持各种编程语言,包括 C++.Java?.Perl.Ruby.PHP 和

详解Node.js如何开发命令行工具_node.js

前言 Node 给前端开发带来了很大的改变,促进了前端开发的自动化,我们可以简化开发工作,然后利用各种工具包生成生产环境.如运行sass src/sass/main.scss dist/css/main.css即可编译 Sass 文件. 在实际的开发过程中,我们可能会有自己的特定需求, 那么我们得学会如何创建一个Node命令行工具. hello world 老规矩第一个程序为hello world.在工程中新建bin目录,在该目录下创建名为helper的文件,具体内容如下: #!/usr/bin

字符串-这个命令行参数程序怎么运行啊?

问题描述 这个命令行参数程序怎么运行啊? #include #include int main(int argc char *argv[]){ char ch; if (argv[1][0] == '-') //注意argv[0]是EXE的路径,所以参数是argv[1].argv[2]-- if (argv[1][1] == 'u') while(( ch=getchar() ) != EOF) putchar( toupper(ch) ); else if (argv[1][1] == 'l'

Android中使用am命令实现在命令行启动程序详解_Android

在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. 复制代码 代码如下: usage: am [subcommand] [options]     start an Activity: am start [-D]         -D: enable debugging     send a broadcast Intent: am broadcast     start an Instrumentation: am instrument [flags

x509watch 0.5.0发布 命令行应用程序

x509watch一个简单的命令行应用程序,可以用来列出即将过期或已经过期的X.509证书,如SSL证书.所有证书查找都在默认标准的PKI目录,但任何其他目录可以被指定一个参数.只支持Base64编码DER和PEM X.509证书. x509watch 0.5.0本次发布的作品解决了旧32位中系统Perl中Y2K38的问题.但不包括新的根CA捆绑"CA-bundle.trust.crt"在Fedora中.更新了GNU GPLv2的副本,以给出新的金融论坛的地址. 下载地址:http:/

《C语言及程序设计》实践参考——用命令行运行程序

返回:贺老师课程教学链接 [项目1-用命令行运行程序]下面的程序,用于复制命令行中给出的文件.请利用命令行的方式运行程序. #include<stdio.h> #include<string.h> int main(int argc,char *argv[]) { FILE *p1,*p2; int c; p1=fopen(argv[1], "r"); p2=fopen(argv[2], "w"); while((c=fgetc(p1))!=

Android中使用am命令实现在命令行启动程序详解

在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. 复制代码 代码如下: usage: am [subcommand] [options] start an Activity: am start [-D]         -D: enable debugging send a broadcast Intent: am broadcast start an Instrumentation: am instrument [flags]         -r