命令模式 写道
命令模式适应于一组对象他们的操作形式非常的类似,这个时候我们可以把对象的行为进行抽象,抽象成命令对象,实现请求与处理解耦。 一般情况下如下几类场景中使用命令模式:
1、当一个应用程序调用者与多个目标对象之间存在调用关系时,并且目标对象之间的操作很类似的时候。
2、例如当一个目标对象内部的方法调用太复杂,或者内部的方法需要协作才能完成对象的某个特点操作时。
1、当一个应用程序调用者与多个目标对象之间存在调用关系时,并且目标对象之间的操作很类似的时候。
2、例如当一个目标对象内部的方法调用太复杂,或者内部的方法需要协作才能完成对象的某个特点操作时。
命令模式有哪些角色组成:
命令角色:声明执行操作接口,由抽象类或接口实现。
具体抽象角色:将一个接收者绑定一个动作,调用接收者相应操作,以实现命令角色声明的执行操作的接口。
请求者角色:调用命令对象执行这个请求。
接收者角色:具体实施与执行一个请求相关操作,任何类都可以作为接收者。
客户角色:创建一个具体的命令对象,可以设定接收者。
命令角色:声明执行操作接口,由抽象类或接口实现。
具体抽象角色:将一个接收者绑定一个动作,调用接收者相应操作,以实现命令角色声明的执行操作的接口。
请求者角色:调用命令对象执行这个请求。
接收者角色:具体实施与执行一个请求相关操作,任何类都可以作为接收者。
客户角色:创建一个具体的命令对象,可以设定接收者。
现用Http请求模拟命令模式:HttpServlet为命令角色,定义命令操作;UserServlet为命令角色的实现类(类似MVC中控制),负责调用业务Service,在由业务Service调用具本的Dao执行处理;Invoker为请求类,持有命令角色的引用,执行请求命令。
命令模式类图如下:
写道
代码如下:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response) ; }
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UserServlet implements HttpServlet { private Service service; public UserServlet(Service service){ this.service = service ; } public void service( HttpServletRequest request,HttpServletResponse response) { this.service.queryUser("userName"); } }
public class Service { public UserDao userDao; public void queryUser(String userName) { } }
public class UserDao { public void queryUser(String uname) { } }
public class Invoker { private HttpServlet servlet; public Invoker(HttpServlet servlet) { this.servlet.service(request,reponse); } }
public class Client { public static void main(String[] args) { Service service = new Service(); HttpServlet servlet = new UserServlet(service); service.queryUser("userName"); } }
相关推荐
设计模式之命令模式 设计模式之命令模式代码 设计模式之命令模式代码
面向对象分析与设计 设计模式之命令模式 面向对象分析与设计 设计模式之命令模式
文章:http://blog.csdn.net/hailushijie/article/details/8719772
23种设计模式之命令模式对命令模式进行了简单的介绍,并附带了例子程序,和大家分享
设计模式之命令模式详解(内附有例子,无源码),2个文件打包在一起上传
java设计模式之命令模式,通过实际生活例子说明命令模式的原理
Java设计模式之命令模式/Java函数式编程 笔记
设计模式这命令模式的Java实现版本和UML设计类图
命令模式(Command) 用意:把一个请求封装到一个对象中,把发出命令和执行命令的责任分开,委派给不同的对象实现。
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
本文实例讲述了JS设计模式之命令模式概念与用法。分享给大家供大家参考,具体如下: 客户创建命令;调用者执行该命令;接收者在命令执行时执行相应操作 简单命令对象一般用来消除二个对象(调用者和接收者)之间的...
将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载。
命令模式 一个服务可以输出四种符号“A,B,C,D”,现在有多个用户要调用这个服务输出不同的字符,每调用一次输出一个字符,请用命令模式实现一个队列缓冲,用户直接向缓冲中填写命令,服务程序负责循环从队列中取出...