房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。
类图:
实现代码:
|
抽象命令类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(); } }
package CommandPattern;
public class FanCommand extends Command { FanReceiver fanReceiver = new FanReceiver(); @Override public void excute() { System.out.println("打开电风扇开关"); fanReceiver.action(); } }
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(); } } |