- 浏览: 62843 次
- 性别:
- 来自: 南宁
最新评论
-
diwuci:
用response.setContentType(" ...
spring mvc 系列3 返回JSON以及文件上传 -
dickluo:
得花时间好好看下代码了 多谢
spring mvc 系列1 环境配置 -
muqingren:
这个学习了,歇息
spring mvc 系列3 返回JSON以及文件上传 -
JetMah:
Jophy 写道
@RequestMapping(pa ...
spring mvc 系列3 返回JSON以及文件上传 -
LifeFree:
LZ 1.的实现,貌似有笔误。
应该类似:
param = ...
一个小细节现实后的蛋疼结果。
用命令模式解释命令
原由:
近日要做个实现,对不同的信息内容前缀采用不同的处理方式。主要类似命令模式。例如信息内容是:Test1111,要得到的算方式是打印出:1111
由于信息内容前缀已经定,不过却有三四十个之多。
于是想起用命令模式来解决。
以下是小弟的实现,如各位有好的建议,欢迎拍砖。
Control.java
组装类:
Command.java
命令接口类:
Actuator.java
命令执行器:
CommandImpl.java
命令实现类:
CommandAAA.java
AAA命令解释器:
CommandBBBB.java
BBBB命令执行器:
CommandComeon.java
Comeon命令执行器:
CommandTest.java
Test命令执行器:
测试类:
package command;
import command.actuator.Actuator;
import command.control.Control;
import command.impl.CommandAAA;
import command.impl.CommandBBBB;
import command.impl.CommandComeon;
import command.impl.CommandTest;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
Actuator actuator = new Actuator();
Command comeon = new CommandComeon(actuator);
Command bbbb = new CommandBBBB(actuator);
Command test = new CommandTest(actuator);
Command aaa = new CommandAAA(actuator);
comeon.addCommand(bbbb);
bbbb.addCommand(test);
test.addCommand(aaa);//可以随意去除命令
Control control = new Control(comeon);
control.execute("AAACCAFE");
}
}
果然搞了xml配置好多了,多谢指点。
原由:
近日要做个实现,对不同的信息内容前缀采用不同的处理方式。主要类似命令模式。例如信息内容是:Test1111,要得到的算方式是打印出:1111
由于信息内容前缀已经定,不过却有三四十个之多。
于是想起用命令模式来解决。
以下是小弟的实现,如各位有好的建议,欢迎拍砖。
Control.java
组装类:
package command.control; import java.lang.reflect.InvocationTargetException; import command.Command; public class Control { private Command command; public Control(Command command) { this.command = command; } public void execute(String message) { try { command.execute(message); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Command.java
命令接口类:
package command; import java.lang.reflect.InvocationTargetException; public interface Command { // 命令解释 public void execute(String message) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException; // 命令出错时返回帮助 public String getHelp(); // 添加下一个命令执行器 public void addCommand(Command command); }
Actuator.java
命令执行器:
package command.actuator; import command.Command; public class Actuator { public void executeAAA(String message, Command command) { System.out.println("命令内容为:" + message + ",解释命令器为:" + command.getClass() + ",命令帮助:" + command.getHelp()); } public void executeBBBB(String message, Command command) { System.out.println("命令内容为:" + message + ",解释命令器为:" + command.getClass() + ",命令帮助:" + command.getHelp()); } public void executeTest(String message, Command command) { System.out.println("命令内容为:" + message + ",解释命令器为:" + command.getClass() + ",命令帮助:" + command.getHelp()); } public void executeComeon(String message, Command command) { System.out.println("命令内容为:" + message + ",解释命令器为:" + command.getClass() + ",命令帮助:" + command.getHelp()); } }
CommandImpl.java
命令实现类:
package command.impl; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import command.Command; import command.actuator.Actuator; public class CommandImpl implements Command { protected String command = ""; // 此命令执行器所要执行的命令的 总写 protected String commandString = ""; // 此命令执行器所要执行的命令 ,多个时以逗号分开 private Command nextCommand;// 下一个命令执行器 private String methodPre = "execute";// 执行器方法前缀 private Actuator actuator;// 执行器 public CommandImpl(Actuator actuator) { this.actuator = actuator; } @Override public void execute(String message) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { if (!"".equals(commandString) && message != null && !"".equals(message)) { String[] arrCom = null; if (commandString.indexOf(",") != -1) { arrCom = commandString.split(","); } else { arrCom = new String[] { commandString }; } for (String strCom : arrCom) { if (message.length() >= strCom.length() && strCom.equalsIgnoreCase(message.substring(0, strCom .length()))) { Method[] methods = actuator.getClass().getMethods(); for (Method method : methods) { if ((methodPre + command).equalsIgnoreCase(method .getName())) { method.invoke(actuator, message, this); return; } } } } // 命令未被执行,调用下一个执行器 if (nextCommand != null) nextCommand.execute(message); } } @Override public String getHelp() { return null; } @Override public void addCommand(Command command) { this.nextCommand = command; } }
CommandAAA.java
AAA命令解释器:
package command.impl; import command.actuator.Actuator; public class CommandAAA extends CommandImpl { protected String command = "AAA"; // 此命令执行器所要执行的命令的 总写 protected String commandString = "aaa,AAA,12,ttb"; // 此命令执行器所要执行的命令,多个时以逗号分开 public CommandAAA(Actuator actuator) { super(actuator); super.command = this.command; super.commandString = this.commandString; } @Override public String getHelp() { return "命令格式为:"+command; } }
CommandBBBB.java
BBBB命令执行器:
package command.impl; import command.actuator.Actuator; public class CommandBBBB extends CommandImpl { protected String command = "BBBB"; // 此命令执行器所要执行的命令的 总写 protected String commandString = "BBBB,11"; // 此命令执行器所要执行的命令 ,多个时以逗号分开 public CommandBBBB(Actuator actuator) { super(actuator); super.command = this.command; super.commandString = this.commandString; } @Override public String getHelp() { return "命令格式为:" + command; } }
CommandComeon.java
Comeon命令执行器:
package command.impl; import command.actuator.Actuator; public class CommandComeon extends CommandImpl { protected String command = "ComeOn"; // 此命令执行器所要执行的命令的 总写 protected String commandString = "comeon,ComeOn,goon"; // 此命令执行器所要执行的命令 // ,多个时以逗号分开 public CommandComeon(Actuator actuator) { super(actuator); super.command = this.command; super.commandString = this.commandString; } @Override public String getHelp() { return "命令格式为:" + command; } }
CommandTest.java
Test命令执行器:
package command.impl; import command.actuator.Actuator; public class CommandTest extends CommandImpl { protected String command = "Test"; // 此命令执行器所要执行的命令的 总写 protected String commandString = "Test,12"; // 此命令执行器所要执行的命令 // ,多个时以逗号分开 public CommandTest(Actuator actuator) { super(actuator); super.command = this.command; super.commandString = this.commandString; } @Override public String getHelp() { return "命令格式为:" + command; } }
测试类:
package command;
import command.actuator.Actuator;
import command.control.Control;
import command.impl.CommandAAA;
import command.impl.CommandBBBB;
import command.impl.CommandComeon;
import command.impl.CommandTest;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
Actuator actuator = new Actuator();
Command comeon = new CommandComeon(actuator);
Command bbbb = new CommandBBBB(actuator);
Command test = new CommandTest(actuator);
Command aaa = new CommandAAA(actuator);
comeon.addCommand(bbbb);
bbbb.addCommand(test);
test.addCommand(aaa);//可以随意去除命令
Control control = new Control(comeon);
control.execute("AAACCAFE");
}
}
- src.rar (1.7 KB)
- 下载次数: 30
评论
3 楼
lilang0603
2010-09-09
xml就是好
2 楼
joknm
2009-12-30
zhangshoukai 写道
为啥不搞个xml文件配置一下。
果然搞了xml配置好多了,多谢指点。
1 楼
zhangshoukai
2009-12-27
为啥不搞个xml文件配置一下。
发表评论
-
一个小细节现实后的蛋疼结果。
2011-03-07 08:37 1180情况是这样子的,比如你用单击按钮在单数次单击里面要求某个数为0 ... -
eclipse3.6 集成 myeclipse 插件
2010-11-16 14:06 4731最近很是邪恶,不想费钱,但又不想邪恶的去找 myeclipse ... -
spring mvc 系列3 返回JSON以及文件上传
2010-10-10 18:58 9747先来看下spring mvc提供返回为json数据的注解 ... -
spring mvc 系列2 泛型DAO(基于存储过程)
2010-10-06 14:05 5471spring mvc 系列1 中: 感谢 ricoyu 提示 ... -
spring mvc 系列1 环境配置
2010-10-02 18:59 1981废话: 热门?=spring + hibernate + st ... -
finally 浅谈
2010-07-29 10:01 2400近日做程序时突发奇想:try ... finally ... ... -
大量数据访问时,用JPA 对象映射关系会出错?
2009-12-30 09:23 2789昨天在做一JPA调试时出了些莫名其妙的错。 public ... -
单线程处理多任务处理方式
2009-12-27 16:14 4310缘由: 在实际的应用中可能会出现这样一种尴尬:只有一个 ... -
Hibernate+jpa+spring
2009-12-23 17:34 1351今天搞了一个JPA+HIBERNATE,以下是资料,全英文 h ... -
需要但没有session等会话信息下的程序开发
2009-10-19 09:52 1193本人最近在做个小实现: 需求:类似于聊天室, ... -
jpa 多个对象映射同时加载
2009-10-13 23:18 1373jpa 多个对象映射同时加载 FetchType可设置为EA ... -
利用RMI实现JAVA分布式应用
2009-10-10 15:53 1027Java RMI (Remote Method Invocat ... -
一道SQL面试题
2009-09-22 17:28 1110有两个表, table1, table2, Table tab ... -
java 取随机字符串
2009-09-16 13:51 4655package org.jinsheng.util; ... -
junit4单元测试的注释使用说明
2009-08-24 23:16 4793junit4单元测试的使用说明 右键项目->prope ... -
spring2.5注释型 + jpa + 数据库池的配置(4)
2009-08-10 00:57 1331PersonDao.java package org.ji ... -
spring2.5注释型 + jpa + 数据库池的配置(3)
2009-08-10 00:45 1108Person.java(实体文件) package org ... -
spring2.5注释型 + jpa + 数据库池的配置(2)
2009-08-10 00:41 1267文件配置: applicationContext.xml ... -
spring2.5注释型 + jpa + 数据库池的配置(1)
2009-08-10 00:28 1836本人用的环境是:eclipse 3.0 + jdk 6.0_1 ...
相关推荐
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用...通过阅读提供的博客链接(http://blog.sina.com.cn/s/blog_161d504630102wxis.html),你可以找到更多关于命令模式在iOS中的应用实例和详细解释。
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象和执行命令的...
命令模式是一种行为设计模式,它的主要目的是将请求者与接收者解耦,使得请求的发起者无需知道哪个对象会执行这个请求,同时也让系统更容易扩展。这种模式在软件工程中广泛应用,特别是在事件驱动和分布式系统中。 ...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在C#编程中,命令模式常用于实现解耦发送者和接收者,提高代码的...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式广泛应用在各种场景中,以提高代码的灵活...
【Qt-命令模式】 在软件设计模式中,命令模式是一种行为设计模式,它将请求封装为一个对象,从而使用户能够参数化不同的请求,支持可撤销的操作,并可以将请求队列化。Qt是一个跨平台的C++图形用户界面应用程序开发...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以参数化不同的请求,对请求排队或记录请求日志,以及支持可撤销的操作。C#作为.NET框架的主要编程语言,非常适合应用这种模式。本篇文章将深入探讨...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在C++中,命令模式的应用可以帮助我们更好地组织代码,提高代码的可扩展性和可维护性。...
在“记事本 使用了策略模式和命令模式”这个主题中,我们将深入探讨这两种设计模式以及它们如何应用于记事本软件的实现。 首先,让我们了解策略模式。策略模式是一种行为设计模式,它允许在运行时选择算法或策略。...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在C#编程中,命令模式常用于实现解耦,使得调用者与执行者之间...
文档“设计模式18:Command(命令模式).docx”可能详细解释了该模式的原理和应用实例,而“命令模式.doc”可能是另一个角度的解释或补充说明。 通过深入理解并应用命令模式,开发者能够更好地设计系统,使其更加灵活...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本示例中,我们将深入探讨命令模式的核心概念和实现方式。 ...
命令模式是一种设计模式,它将请求封装为一个对象,从而使我们能使用不同的请求、队列或者日志请求,以及支持可撤销的操作。在本代码demo中,我们将深入探讨这一模式的实现及其应用。 命令模式的核心思想是解耦调用...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中实现命令模式,我们可以创建一个接口或者抽象类作为命令...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中,命令模式的应用非常广泛,尤其在需要解耦调用者和接收...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求以便支持可撤消的操作。在这个简单的计算器例子中,我们将探讨如何使用命令模式来实现加法、...
单例模式和命令模式是两种常见的设计模式,在软件开发中有着广泛的应用。它们分别解决了不同的问题,但在实际项目中,可以巧妙地结合使用,以提高代码的灵活性和可维护性。 单例模式是一种确保一个类只有一个实例,...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在C++中,我们可以利用面向对象的特性来有效地实现这个模式。 ...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本文中,我们将深入探讨命令模式的原理、结构和实际应用,并...