设计模式的应用场景(18)--命令模式

命令模式

定义:把一个请求或者操作封装到一个对象中。命令模式把发送命令的责任和执行命令的责任分割开,委派给不同的对象。

优点:命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分隔开,从而使新的命令类可以很容易被加入到系统当中。

缺点:命令类较多时不便于管理。

使用时机:当需要先将一个函数登记上,然后再以后调用此函数时,就需要使用命令模式,其实这就是回调函数。

小巩在饭店吃饭,看到点菜单把顾客要点的菜告诉给厨师,厨师根据菜单来做菜。
这种情形类似命令模式。

先设计厨师类:

public class Chef {
    public void cook() {
        System.out.println("厨师开始做菜");
    }
}

然后设计命令接口和命令类

public interface Command1 {
    void execute();
}

public class CookCommand implements Command1 {
    private Chef chef;
    public CookCommand(Chef chef) {
        this.chef = chef;
    }

    public void execute() {
        chef.cook();
    }
}

实现顾客类,顾客联系的是命令类。目的是间接调用厨师类

import java.util.List;
import java.util.ArrayList;

public class Consumer {
    private List list = new ArrayList();
    public void orderDishes() {
        for (int i = 0; i < list.size(); i++) {
			Command command = (Command)list.get(i);
	        command.execute();
        }
    }

    public void addCommand(Command1 command) {
		list.add(command);
    }
}

客户端调用的时候,厨师注入命令类,命令类注入到顾客类


public class Client {
    public static void main(String[] argv) {
		Chef chef=new Chef();
		Command command=new CookCommand(chef);
		
		Consumer cosumer=new Consumer();
		cosumer.addCommand(command);
		cosumer.orderDishes();

    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值