一、基本介绍
在Java中,触发器(Trigger)通常指的是一种设计模式,它是命令模式的一种扩展。触发器模式允许用户通过预定义的接口发送命令,然后由触发器在某个特定时间或条件下执行这些命令。
二、场景应用
触发器模式的典型应用场景是定时任务、事件驱动的系统等。在这种模式中,通常会有以下几个部分:
1、Command: 定义命令的接口,声明执行操作的方法。
2、ConcreteCommand: 实现命令接口的具体类,它对应于具体的行为和接收者。
3、Client: 创建具体的命令对象,并设置它的接收者。
4、Invoker: 要求命令对象执行请求。
5、Receiver: 知道如何实施与执行一个请求相关的操作。
三、简单示例
// Command接口
public interface Command {
void execute();
}
// ConcreteCommand实现类
public class LightOnCommand implements Command {
private Light light;
public LightOnCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
light.on();
}
}
// Receiver类
public class Light {
public void on() {
System.out.println("Light is on");
}
public void off() {
System.out.println("Light is off");
}
}
// Invoker类
public class RemoteControl {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void pressButton() {
command.execute();
}
}
// Trigger类,用于在特定条件下触发命令
public class Trigger {
private RemoteControl remote;
private Command command;
public Trigger(RemoteControl remote, Command command) {
this.remote = remote;
this.command = command;
}
public void trigger() {
remote.setCommand(command);
remote.pressButton();
}
}
// 客户端代码
public class TriggerPatternDemo {
public static void main(String[] args) {
RemoteControl remote = new RemoteControl();
LightOnCommand command = new LightOnCommand(new Light());
remote.setCommand(command);
Trigger trigger = new Trigger(remote, command);
trigger.trigger(); // 触发命令
}
}