房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。


类图:

设计模式-命令模式

实现代码:

抽象命令类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();

    }

}



相关文章: