命令模式(Command )
在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。
优点
1、降低了系统耦合度。 2、新的命令可以很容易添加到系统中去。
缺点
使用命令模式可能会导致某些系统有过多的具体命令类。
实现场景
人想要打开电视机或者关闭电视机,调用者→命令→接受者,人是调用者,电视机是接收者,
命令接口
public interface Order {
void excute();
}
命令执行者
//命令执行者
public class TVReceiver {
public void open() {
System.out.println("打开电视机");
}
public void change() {
System.out.println("切换电视机");
}
public void close() {
System.out.println("关闭电视机");
}
}
打开电视机命令
public class OpenOrder implements Order{
private TVReceiver receiver = new TVReceiver();
@Override
public void excute() {
receiver.open();
System.out.println("电视机打开");
}
}
换台命令
public class ChangeOrder implements Order{
TVReceiver receiver = new TVReceiver();
@Override
public void excute() {
receiver.open();
receiver.change();
}
}
命令调用者
public class People {
public void command(Order order){
order.excute();
}
}
测试:
public class main {
public static void main(String[] args) {
OpenOrder openOrder = new OpenOrder();
People people = new People();
people.command(openOrder);//people想要执行开启电视机的命令
}
}
输出结果:
后面如果想增加关闭电视机的命令,可以实现Order接口,在excute方法里面写相应的操作。