命令者模式 : 把一个请求或者操作封装到一个对象中。命令者模式把发出的责任和执行的命令的责任分割开,委派不同的对象。
他容许执行方和命令方相互独立,并且扩展性很好
package com.liao.commnd;
import java.util.Iterator;
import java.util.Vector;
/**
* 命令模式
* @author liaoyp
*
*/
public class CommndTest {
public static void main(String[] args) {
Invoker invoker = new Invoker();
CommndA commndA = new CommndA();
CommndB commndB = new CommndB();
invoker.addCommnd(commndA);
invoker.addCommnd(commndB);
Iterator<Commnd> commdIterator = invoker.getCommndList();
Commnd commnd = null;
while (commdIterator.hasNext()) {
commnd = commdIterator.next();
commnd.execute();
}
/**
* 打印的结果:
*
* 我是commdA 我正在执行
* 我是commB 我正在执行
*/
}
}
interface Commnd {
void execute();
void unexecute();
}
class Invoker {
Vector<Commnd> commndVector = new Vector<Commnd>();
// 添加命令
public void addCommnd(Commnd commnd) {
commndVector.add(commnd);
}
public Iterator<Commnd> getCommndList() {
return commndVector.iterator();
}
}
class CommndA implements Commnd {
@Override
public void execute() {
System.out.println("我是commdA 我正在执行");
}
@Override
public void unexecute() {
System.out.println("我是commdA 我是不会执行");
}
}
class CommndB implements Commnd {
@Override
public void execute() {
System.out.println("我是commB 我正在执行");
}
@Override
public void unexecute() {
System.out.println("我是commdB 我是不会执行");
}
}