文章目录
- UML类图
- Command接口
- Invoker.java
- Light.java
- OnLightCommand.java
- Test.java
- 运行结果
- 位置
UML类图
Command接口
这个你会,只有一个方法,并且接口里面是抽象方法
package mlms;
/*
- 这个你会,只有一个方法,并且接口里面是抽象方法
*/
public interface Command {
public void execute();
}
Invoker.java
- executeCommand()就是执行命令
方法的实现:命令.执行
package mlms;
public class Invoker {
public Command command;
public void setCommand(Command command){//set方法 你说怎么写?this!
this.command = command;
}
public void executeCommand(){//还没想好怎么写出来的
//我想想,这是executeCommand方法,就是执行命令方法。那么具体的实现就是 命令.执行
command.execute();
}
}
Light.java
方法的实现:见名知意
on 那就输出 灯开了
package mlms;
public class Light {
public void on(){//见名知意
System.out.println("灯开了");
}
public void off(){
System.out.println("灯关了");
}
}
OnLightCommand.java
- execute()那么就是执行灯开,
- 还要一个构造方法
package mlms;
public class OnLightCommand implements Command {
public Light light;
//就是,你声明了对象light,然后没创建就直接用?不合适吧
//构造方法
public OnLightCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
// 那么肯定execute 执行的是让灯开的方法
light.on();
}
}
Test.java
新建接收者 命令 请求者 ,设置命令并执行它
package mlms;
/*
* 看灯开的四个 理一遍怎么写的
* 然后其他的就相当是复制粘贴
*/
public class Test {
public static void main(String[] args) {
//你得有请求者吧?
Invoker in = new Invoker();
//你得有接收者吧
Light light = new Light();
//你得有命令吧
Command c_on = new OnLightCommand(light);
//先设置命令 再执行他
in.setCommand(c_on);
in.executeCommand();
}
}