灯泡开关小程序
方法一
灯类
//怎么产生灯亮,灯灭的动作
public class Light{
private boolean status = true;
public Event lightOn(){
return new OnEvent();
}
public Event lightOff(){
return new OffEvent();
}
public static void main(String[] args){
Light light = new Light();
Event event = light.lightOff();
Controller controller = new Controller();
controller.addEvent(event);
//这样会存在 按几次事件 就会出现多少次 灯亮了 或 灯灭了的问题
// controller.addEvent(event);
// controller.addEvent(event);
// controller.addEvent(event);
}
}
----------
//事件接口 根据不同的事件 执行不同的逻辑
//事件接口 类 Event
public interface Event{
public void execute();
}
------------
//实现接口
public class OnEvent implements Event{
@Override
public void execute(){
System.out.println("灯亮了...");
}
}
----------
public class OffEvent implements Event{
@Override
public void execute(){
System.out.println("灯灭了...");
}
}
-------------
//开关的控制 类
public class Controller{
public void addEvent(Event event){
event.execute();
}
}
---------------------------------------------------------------------
方法二
解决方法一的问题手段
public class Light{
private boolean status = true; //灯亮
public Event lightOn(){
return new Event(){
@Override
public void execute(){
if(!status){
status = true;
System.out.println("灯亮了...");
}
}
};
}
public Event lightOff(){
return new Event(){
@Override
public void execute(){
if(status){
status = false;
System.out.println("灯灭了....");
}
}
};
public static void main(String[] args) {
Light light = new Light();
Event event = light.lightOff(); //指令
Controller controller = new Controller();
controller.addEvent(event); //执行指令
}
}
-------------
//开关控制 类
public class Controller {
public void addEvent(Event event){
System.out.println("解析指令,然后执行....");
event.execute();
}
}
------------------
//事件接口,根据不同的事件,执行不同的逻辑
public interface Event {
public void execute();
}