**定义
将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。**
package cn.yang.test.controller;
import javax.sound.midi.Soundbank;
/**
* Created by Dev_yang on 2016/3/1.
*/
public class 命令模式 {
public static void main(String[] args) {
Invoker invoker = new Invoker();
invoker.setCommond(new Click());
invoker.action();
invoker.setCommond(new DoubleClick());
invoker.action();
//执行结果为:
// Click
// DoubleClick
}
}
interface Commond{
void execute();
}
class Click implements Commond{
public void execute() {
new ReceiverImpl().doThing();
}
}
class DoubleClick implements Commond{
public void execute() {
new ReceiverImp2().doThing();
}
}
class Invoker{
private Commond commond;
public void setCommond(Commond commond) {
this.commond = commond;
}
public void action(){
commond.execute();
}
}
interface Receiver{
void doThing();
}
class ReceiverImpl implements Receiver{
public void doThing() {
System.out.println("Click");
}
}
class ReceiverImp2 implements Receiver{
public void doThing() {
System.out.println("DoubleClick");
}
}