房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。
类图:
实现代码:
抽象命令类Command :
package CommandPattern;
public abstract class Command {
public abstract void excute();
}
具体命令类LightCommand :
package CommandPattern;
public class LightCommand extends Command{
LightReceiver lightReceiver = new LightReceiver();
@Override
public void excute() {
System.out.println("打开电灯开关");
lightReceiver.action();
}
}
具体命令类FanCommand :
package CommandPattern;
public class FanCommand extends Command {
FanReceiver fanReceiver = new FanReceiver();
@Override
public void excute() {
System.out.println("打开电风扇开关");
fanReceiver.action();
}
}
调用者类Invoker:
package CommandPattern;
public class Invoker {
private Command command;
public Invoker(Command command){
this.command = command;
}
public void setCommand(Command command) {
this.command = command;
}
public void call(){
command.excute();
}
}
接受者类LightReceiver :
package CommandPattern;
public class LightReceiver {
public void action(){
System.out.println("电灯亮");
}
}
接受者类FanReceiver :
package CommandPattern;
public class FanReceiver {
public void action(){
System.out.println("电风扇转");
}
}
客户端类Client :
package CommandPattern;
public class Client {
public static void main(String[] args) {
Command command;
// command = new LightCommand();
command = new FanCommand();
Invoker invoker = new Invoker(command);
invoker.call();
}
}