设计模式之命令模式

命令模式 写道
命令模式适应于一组对象他们的操作形式非常的类似,这个时候我们可以把对象的行为进行抽象,抽象成命令对象,实现请求与处理解耦。 一般情况下如下几类场景中使用命令模式:
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");
	}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值