命令模式 写道
命令模式适应于一组对象他们的操作形式非常的类似,这个时候我们可以把对象的行为进行抽象,抽象成命令对象,实现请求与处理解耦。 一般情况下如下几类场景中使用命令模式:
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"); } }
相关推荐
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本文中,我们将深入探讨命令模式的原理、结构和实际应用,并...
### 深入浅出设计模式之命令模式 #### 前言 设计模式作为软件工程中的重要组成部分,为开发者提供了解决常见问题的有效途径。在众多设计模式中,命令模式是一种行为型设计模式,它把请求封装成对象,以便使用不同的...
【行为模式】Head First 设计模式之命令模式(Command) 命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,...
**Java设计模式之命令模式详解** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在Java编程中,命令模式广泛应用于解耦请求的发送者...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式广泛应用在各种场景中,以提高代码的灵活...
命令模式是一种行为设计模式,它的主要目的是将请求者与接收者解耦,使得请求的发起者无需知道哪个对象会执行这个请求,同时也让系统更容易扩展。这种模式在软件工程中广泛应用,特别是在事件驱动和分布式系统中。 ...
Java设计模式之命令模式/Java函数式编程 笔记
命令模式是一种行为设计模式,它将请求封装成独立的对象,使得可以使用不同的请求、队列请求、记录请求历史以及支持可撤销的操作。这种模式在软件工程中被广泛应用,尤其是在需要解耦请求发起者和接收者时,提高了...
命令模式是一种行为设计模式,它的主要目的是将请求封装为一个对象,以便支持可撤销的操作、参数化不同命令以及将命令的执行与请求者解耦。在23种经典设计模式中,命令模式因其灵活性和实用性而被广泛使用。 在命令...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于降低系统之间的耦合度,提高灵活性...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中实现命令模式,我们可以按照以下步骤进行: 1. **定义...
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...