您的位置:首页 > 其它

设计模式_命令模式

2015-10-20 11:27 274 查看
/**
* 定义:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,
* 这种无法抵御变化的紧耦合是不合适的
* 。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(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() {
// TODO Auto-generated method stub
System.out.println("CommondA");
excuer.commondA();
}
}

/**
*具体命令类B
*/
class CommondB implements Commond{
Excuer excuer;
public  CommondB(Excuer _Excuer)
{
excuer = _Excuer;
}

@Override
public void excute() {
// TODO Auto-generated method stub
System.out.println("CommondB");
excuer.commondB();
}
}

/**
*具体命令类C
*/
class CommondC implements Commond{
Excuer excuer;
public CommondC(Excuer _Excuer)
{
excuer = _Excuer;
}

@Override
public void excute() {
// TODO Auto-generated method stub
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;
}
//commond a
void commondA(){
commond_a.excute();
}

//commond b
void commondB(){
commond_b.excute();
}
}

/**
* 命令模式
*/
public class Pattern_03_Command {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Excuer excuer = new Excuer();// receriver
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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: