11.18

命令模式:

定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。

意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。

主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。

代码举例(开灯和关灯)

 命令抽象类

public interface Command {
    
    public void excute();
    public void undo();
 
}

具体命令对象

复制代码
public class TurnOffLight implements Command {
 
    private Light light;
 
    public TurnOffLight(Light light) {
        this.light = light;
    }
 
    @Override
    public void excute() {
        // TODO Auto-generated method stub
        light.Off();
    }
 
    @Override
    public void undo() {
        // TODO Auto-generated method stub
        light.On();
    }
 
}
复制代码

实现者

复制代码
public class Light {
 
    String loc = "";
 
    public Light(String loc) {
        this.loc = loc;
    }
 
    public void On() {
 
        System.out.println(loc + " On");
    }
 
    public void Off() {
 
        System.out.println(loc + " Off");
    }
 
}
复制代码

请求者

复制代码
public class Contral{
 
    public void CommandExcute(Command command) {
        // TODO Auto-generated method stub
        command.excute();
    }
 
    public void CommandUndo(Command command) {
        // TODO Auto-generated method stub
        command.undo();
    }
 
}
复制代码
posted @ 2021-11-18 22:14  韩佳龙  阅读(79)  评论(0编辑  收藏  举报