/**
* 定义:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,
* 这种无法抵御变化的紧耦合是不合适的
* 。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。
*
*/
/**
*命令模式组成:1.抽象命令;2、命令的执行者;3、命令的控制着
*/
/**
*命令的执行者
*/
class Excuer{
void commondA(){}
void commondB(){}
void commondC(){}
}
/**
*抽象命令
*/
interface Commond{
public void excute();
}
/**
*具体命令类A
*/
class CommondA implements Commond{
private Excuer excuer;
public CommondA(Excuer _Excuer)
{
excuer = _Excuer;
}
@Override
public void excute() {
System.out.println("CommondA");
excuer.commondA();
}
}
/**
*具体命令类B
*/
class CommondB implements Commond{
Excuer excuer;
public CommondB(Excuer _Excuer)
{
excuer = _Excuer;
}
@Override
public void excute() {
System.out.println("CommondB");
excuer.commondB();
}
}
/**
*具体命令类C
*/
class CommondC implements Commond{
Excuer excuer;
public CommondC(Excuer _Excuer)
{
excuer = _Excuer;
}
@Override
public void excute() {
System.out.println("CommondC");
excuer.commondC();
}
}
/**
*命令的协调控制者
*/
class Invoker{
Commond commond_a,commond_b;
void setCommond(Commond _commond,Commond comm)
{
commond_a = _commond;
commond_b = comm;
}
void commondA(){
commond_a.excute();
}
void commondB(){
commond_b.excute();
}
}
/**
* 命令模式
*/
public class Pattern_03_Command {
/**
* @param args
*/
public static void main(String[] args) {
Excuer excuer = new Excuer();
Commond commond_a = new CommondA(excuer);
Commond commond_b = new CommondB(excuer);
Invoker invoker = new Invoker();
invoker.setCommond(commond_a, commond_b);
invoker.commondA();
invoker.commondB();
}
}